在VS2010編譯x264(20091006)中我們用vs2010編譯了x264,但是過程很復雜,而且版本還是09年的,今天我將介紹在linux下編譯最新版的x264,而且可以調試,近距離觀察h264編碼實現的每個細節。
下載x264源碼
cd ~
git clone git://git.videolan.org/x264.git
這里我用git來下載最新的源碼,也可以訪問官網手動下載:ftp://ftp.videolan.org/pub/videolan/x264/snapshots/
安裝yasm
因為x264源碼中有一些程序是用匯編寫的,這樣可以提高編碼性能,所以在編譯的時候需要一個匯編解釋器。
如果用的是ubuntu系統的話可以使用
sudo apt-get install yasm
安裝Code::Blocks
為了能夠好的調試x264源碼,我們需要一個IDE,在此我推薦Code::Blocks,在ubuntu自帶的軟件中心搜索安裝即可。
建立x264工程
打開Code::Blocks,File->New->Project->Empty Progect->Go,Next,輸入名稱和路徑,這里要和x264的路徑一致,比如我的
注意要把最后一項Resulting filename自動生成那個x264刪除掉
Next->Finish!
接下來開始配置工程,右鍵工程->Properties,補完Makefile的路徑,選上“This is a customer file”,確定。
再次右鍵工程進入Properties,點擊右下角Project’s build option,在Make commands選項卡中把所有$target去掉,確定。
右鍵工程->Build Option->Make commands,去掉所有$target,確定。
然后把一些主要的文件加到工程里去,比如x264.c。
Build
Build->Build,或者ctrl+F9,編譯x264,0 errors, 0 warnings,在x264文件夾下生成x264可執行文件和一些過程文件。
Debug
首先在x264.c的main函數里加幾個斷點。
Debug->Start,出現錯誤:沒有符號表被讀取。請使用 “file” 命令。
這是由於x264可執行文件路徑錯誤造成的,一般code blocks工程默認的編譯路徑是在bin/debug/x264,而我們是用Makefile編譯的,x264文件就在當前目錄下,gdb自然找不到文件了。解決的方法有兩種:修改Makefile和修改codeBlocks的默認路徑。因為Makefile是源碼自帶的,所以我選擇修改codeBlocks。
右鍵工程->Properties->Build targets,在output filename里把路徑改成當前文件夾,確定。
Debug->Start,再次出錯:no debugging symbols found 。
這是因為在x264可執行文件中沒有調試符號,這也是Debug版和Release版的區別,因為codeBlocks是根據Makefile編譯的,所以要想加入調試信息就必須修改Makefile的配置。運行終端,
cd ~/x264
./configure --enable-debug