1. 程式人生 > >最新ffmpeg編譯和用eclipse進行原始碼除錯(linux)

最新ffmpeg編譯和用eclipse進行原始碼除錯(linux)

轉自:http://blog.csdn.net/huangkangying/article/details/6434683

  最近由於專案需要,必須修改ffmpeg的原始碼進行修改才能滿足專案的需求,但以前我從來沒有自己去編譯和使用ffmpeg的原始碼,一直都是用別人編譯好了的sdk,再加上習慣了vs方便的編譯環境,要在linux下對如此多的原始碼進行編譯和除錯還真的是一件非常困難的事情。Linux下也沒別的什麼好的整合開發環境好用,沒辦法eclipse還湊合吧。好了,廢話就不多說了,直接進入正題吧。

第一部分: ffmpeg的編譯

首先要下載最新的ffmpeg原始碼:

由於我用的是教育網,用svn下載太tm的慢了,1kb/s,估計到明年都下不完。推薦一個網站,除了有ffmpeg的原始碼以外還有各個源的原始碼,並且用現成的sdk(windows下的)。

網址如下:

Step1: 網址

Step2: 版本問題

下載完成以後,一個很重要的工作要做,否則以後你在使用或者除錯ffmpeg的時候會出現很多莫名其妙的問題。一定要先檢查的清理你的linux下是否已經安裝了ffmpeg的庫檔案,如果安裝了,要先remove掉,否則到最近,你的庫有的是新的,有的是舊的,到用的時候給你報一堆版本錯誤,你就哭吧……具體做法:

下面是我在編譯的時候出現的版本錯誤:

ffmpeg: relocation error: ffmpeg: symbol postproc_configuration, version LIBPOSTPROC_51 not defined in file libpostproc.so.51 with link time reference

解決辦法:

$: apt-get remove ffmpeg

$: apt-get remove libavcodec52 libavdevice52 libavfilter0 libavformat52 libavutil49 libpostproc

$: apt-get remove libx264-dev

上面的解決辦法可能在不同的機子上不一樣,因為安裝的庫可能不同

如果還不行,就手動解決:

庫檔案的路徑:/usr/lib

標頭檔案的路徑:/usr/include

進入這些路徑看看是否有ffmpeg中的庫,如果有,都刪除掉。

Step3: 安裝ffmpeg所依賴的庫檔案:

$: sudo apt-get update

$: sudo apt-get install build-essential git-core checkinstall yasm texi2html libfaac-dev /

libopencore-amrnb-dev libopencore-amrwb-dev libsdl1.2-dev libtheora-dev /

libvorbis-dev libx11-dev libxfixes-dev libxvidcore-dev zlib1g-dev

這個步驟中只提供最常用的配置所需要的庫檔案,如果在編譯ffmpeg中還有其它附加的配置,請使用新立得軟體管理器進行安裝。

Step4: 安裝x264

從Step1中的網址上下載x264原始碼:

$:./configure –enable-static

$:make

$:make install

Step5: 安裝ffmpeg

注意:

1. 如果是安裝庫檔案,一定要使用--enable-shared, 不然不會生成.so檔案。

2. 預設的庫檔案目錄是/usr/local/lib,我們把它修改為/usr, 這樣在安裝的時候方便

$: ./configure --enable-gpl --enable-shared --enable-version3 --enable-nonfree --enable-postproc --enable-libfaac --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libxvid --enable-x11grab --prefix=/usr

$: make

$: sudo make install

第二部分:使用eclipse進行除錯

Linux下也沒有什麼好用的整合開發環境,就eclipse吧。

首先下載eclispe + cdt,這個網上用ubuntu的software center就可以。

這裡要注意一下,使用eclipse進行除錯,如果ffmpeg原始碼的編譯中使用了—enable-shared選項,那麼在除錯時會出現無法step into的情況,這個問題折磨了我好久,後來才發現是.so檔案乾的事,唉……

重新配置:在ffmpeg原始碼的目錄下輸入

$: ./configure --enable-gpl --enable-nonfree --enable-pthreads --enable-libfaac --enable-libmp3lame --enable-libtheora --enable-libx264 --enable-libxvid --enable-x11grab --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopencore-amrnb --enable-version3 --disable-optimizations --disable-asm

$: make

建立專案工程,這裡我們選File->new->Makefile Project with Existing Code

clip_image002

n 在Import Existing Code對話方塊中的Toolchain for Indexer Settings中選Linux GCC

clip_image004

然後點Browse找到原始碼資料夾

clip_image006

然後點OK->Finish

可以看到新建的工程中已經包含了所有的原始碼和編譯後的檔案。

clip_image008

右鍵點選ffmpeg_g選debug as->Local c/c++ Application->gdb/mi 然後Ok

clip_image010

好了,想怎麼調就怎麼調吧。

關於Eclipse的快捷鍵:

使用vs用習慣了,eclipse除錯時的快捷鍵不太好用,想改。

window->Preference->general->keys->Scheme: Microsoft visual studio

但隨之而來的一個問題,F10!

這個鍵在vs裡面是step over, 但eclipse中只要你一按f10就會出出file對話方塊,後來上網查了一下,解決的辦法如下:

Eclipse F10 Key mapping bug

$: gconftool-2 --get /desktop/gnome/interface/menubar_accel

F10

$: gconftool-2 --type string --set /desktop/gnome/interface/menubar_accel "ctrl-shift-m"


相關推薦

最新ffmpeg編譯eclipse進行原始碼除錯linux

轉自:http://blog.csdn.net/huangkangying/article/details/6434683   最近由於專案需要,必須修改ffmpeg的原始碼進行修改才能滿足專案的需求,但以前我從來沒有自己去編譯和使用ffmpeg的原始碼,一直都是用別人

內核級線程KLT戶級線程ULT

版權 href 說明 撤銷 設計 不能 開發 系統 恢復 內核級線程(KLT)和用戶級線程(ULT) tags: KLT ULT 內核級線程 用戶級線程 引言:本文涉及到操作系統的內核模式和用戶模式,如果不太懂的話,可以參看我的這篇文章內核模式和用戶模式,其中簡單的進行

使用Eclipse進行SWT程式設計4

8.2.2. 滑塊(Slider), 標尺(Scale)和進度條(ProgressBar)視窗元件標尺(Scale)表示一段可選擇的連續值。範圍可以用Scale類的setMinimum() 和setMaximum()方法設定。並可以使用getSelection()方法得到所選

使用Eclipse進行SWT程式設計1

使用Eclipse進行SWT程式設計(1)"The best way to predict the future is to invent it."—Alan Kay1. 為什麼要使用SWT?SWT是IBM開發一套跨平臺的GUI開發框架。為什麼IBM要建立另一種GUI呢?為什

pngbmp圖片畫素讀取linux

查詢當前目錄下的png和bmp圖片,將其畫素點讀取出來壓縮排theme.bin中,並將圖片的其他資訊如寬高壓縮前後大小和在theme.bin中的偏移位置儲存在bmpaddr.h中,方便在其他程式碼中讀取圖片畫素資訊。 main.c #include <

Logstash、KafkaElastaticSearch安裝以及簡單使用Linux

前段時間公司需要做一個日誌分析的需求,於是開始了對於日誌分析這方面的研究。現在系統中整合的是Fluem + elastaticSearch + 還有influxdb,如果基於這些做日誌分析的話,就可能需要使用Flume + kafka + elastaticSearch但是我

spring原始碼編譯匯入eclipse

2、原始碼編譯 cmd進入spring原始碼根目錄,執行編譯原始碼:gradlew build 可能出現問題: (1)如果出現某些方法找不到,需要檢查下jdk版本,1.6版本的有些方法會找不到。需要升級jdk到1.7+ (2)出現:java.lang.OutOfMemoryError: GC overhea

Eclipse 進行Vue開發

參考文件http://www.cnblogs.com/windy-love/p/9522312.html eclipse安裝codeminx 外掛 之後eclipse提示要安裝eslint,在工程目錄下D:\workspace\lajifenlei\garcol_wx\ 下執行npm i

Mac FFmpeg編譯解決nasm/yasm not found or too old錯誤

FFmpeg編譯 下載程式碼:git clone https://git.ffmpeg.org/ffmpeg.git 然後輸入命令進行編譯:找到下載的目錄下,然後用命令進入這個資料夾下cd ffmpeg,然後輸入./configure。 竟然沒有編譯過出現錯誤是

Gradle Android最新自動化編譯指令碼教程(提供demo原始碼)

一、前言Gradle 是以 Groovy 語言為基礎,面向Java應用為主。基於DSL(領域特定語言)語法的自動化構建工具。上面這句話我覺得寫得很官方,大家只需知道Gradle可以用來android開發中進行多個專案依賴的自動化編譯指令碼,知道這點也就知道我們使用它的目的;為

64位 linux作業系統下如何編譯執行32位原始碼

解決辦法:  1、執行命令: yum whatprovides libstdc++.so.6   然後會提示哪個安裝包有這個庫檔案如下:   [[email protected] ~]# yum whatprovides libstdc++.so.6  Loaded plugins: aliases

首次Eclipse進行android開發,能夠提高效率的配置

<=:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 二、解決Eclipse中android新增過載函式時引數為arg0,arg1的問題 解壓sources-19_r02.zip後,會得到包含了對應(android-19,

Weka原始碼分析1逆向工程Eclipse外掛ObjectAidAmaterasUML的安裝方法

    為了更好的分析Weka原始碼中各個類之間的關係,需要根據.java檔案將各個類之間的關係以UML中的類圖(Class diagram)的形式展示出來。在眾多可以實現逆向工程的Eclipse UML外掛中,我覺得AmaterasUML和ObjectAid是相對比較理想

怎樣Eclipse進行遠端debug

       什麼是遠端除錯,就是在A機器上利用Eclipse單步跟蹤除錯B機器上的Web應用,當然除錯A機器上Web應用也是沒有問題的,90%我都是除錯本機的Web應用,遠端除錯的意義我想我不用說了,大家都會想到它的好處,你可以在本地除錯非本地測試環境上的應用,這是

1建立二叉樹的二叉連結串列。 2寫出對二叉連結串列儲存的二叉樹進行先序、中序後序遍歷的遞迴非遞迴演算法。 3寫出對二叉連結串列儲存的二叉樹進行層次遍歷演算法。 4求二叉樹的所有葉子及結點總數。

(1)建立二叉樹的二叉連結串列。 (2)寫出對用二叉連結串列儲存的二叉樹進行先序、中序和後序遍歷的遞迴和非遞迴演算法。 (3)寫出對用二叉連結串列儲存的二叉樹進行層次遍歷演算法。(4)求二叉樹的所有葉子及結點總數。 include<stdio.h> #inclu

STM32CubeMX生成基於Eclipse的GCC工程工程模板Jlink進行SWD單步除錯

首先,新建STM32Cube工程,在SYS選單下選擇 Serial Wire。 進入工程選單下的設定介面更改Toolchain/IDE為TrueSTUDIO 點選工程-生成程式碼,可以看到生成的檔案 接下來新建一個eclipse空的C工程 新建工程成功後,把STM3

Eclipse進行視覺化Java介面設計

下載後的VE是一個zip檔案,請將其壓縮包中plugins和features目錄下的內容解壓到eclipse安裝目錄的相應目錄中即可。如果你的eclipse是執行著的,請關閉並重新啟動eclipse。開始一個設計任務現在,所有程式安裝完成,筆者將用一個例子,來講解Visual Editor的使用。在這個例子中

PythonC|C++的混編:利用Cython進行混編

cde uil 有時 當前 class def 將在 python 混編 還能夠使用Cython來實現混編 1 下載Cython。用python setup.py install進行安裝 2 一個實例 ① 創建helloworld文件夾創建hellowor

ASP.NET Core MVC EF Core 構建Web應用

work nal nta 多個 包括 catch web 應用 自動 選項卡 本節學習如何執行基本的 CRUD (創建、 讀取、 更新、 刪除) 操作。 自定義“詳細信息”頁 學生索引頁的基架代碼省略了 Enrollments 屬性,因為該屬性包含一個集合。 在“詳細信息”

ASP.NET Core MVC EF Core 構建Web應用

fix pro school time lap namespace 繼承映射 數據庫表 eas 在上一節中,已經處理了並發異常。 本節將演示如何在數據模型中實現繼承。 在面向對象的編程中,可以使用繼承以便於重用代碼。 在本教程中,將更改 Instructor和 Studen