電腦上安裝太多的開源庫,環境變量里面一些常用的頭文件都有幾種,以前使用的編譯ffmpeg的方法現在常常提示錯誤。從config.log中看,這些錯誤往往都是一些頭文件引用錯誤導致。
由於項目中繼續編譯自己的ffmpeg,本次從零開始,搭建msys+mingw的編譯環境。
參考網友資源,特此表示感謝。 http://blog.csdn.net/chen_chun_guang/article/details/7023638
首先說明本次實驗環境:windows xp安裝虛擬機vmware 8.0,在虛擬機里安裝了一個windows xp,除了UltraEdit用於查看文檔,不安裝多余的軟件。
1. 下載需要的資源,做好准備工作。
1) MinGW-MSYS Bundle http://sourceforge.net/projects/mingwbundle/ mingw-msys-0.6-x86.zip 2012-08-21
2) SDL http://www.libsdl.org/ 1.2.15
3) yasm http://yasm.tortall.net/ 1.2.0
4) FFmpeg http://www.ffmpeg.org/ 1.2.1
5) pthreadgc2.dll http://www.dll-files.com 2.9.0.0 百度google一堆
2. 安裝MinGW-MSYS Bundle.
下載來的mingw-msys-0.6-x86.zip,大約100MB多點。解壓后直接雙擊。默認路徑安裝。
會在C盤占用三個文件夾。C:/MinGW、 C:/msys和 C:\Program Files\MinGW-MSYS ,桌面生成一個快捷方式MinGW-MSYS可以直接啟動命令行。以下所有操作都是從這里進入命令行。
這和我以前使用mingw-get-inst-20120426.exe在線安裝的方法默認路徑不一樣,而且也不需要聯網下載。

3. 編譯安裝SDL
沒有SDL支持,就沒法使用ffplay.exe播放。
本次試驗使用建立工作目錄C:\msys\1.0\ffmpeg\SDL-1.2.15,將SDL源碼解壓到SDL-1.2.15。
進入SDL目錄,編譯命令很簡單。
$ ./configure --prefix=/usr/local/SDL
$ make
$ make install
完成SDL的安裝。
通過下面命令導入SDL環境變量.
$ export PATH="$PATH:/usr/local/SDL/bin:/usr/local/SDL/include/SDL:/usr/local/lib"
是否成功,可以使用命令查看
$ echo $PATH
4. 編譯安裝yasm
將下載的yasm-1.2.0.tar.gz,解壓到C:\msys\1.0\ffmpeg\yasm-1.2.0
進入yasm目錄,分別執行命令:
$ ./configure --prefix=/usr/local/yasm
$ make
$ make install
並通過下面命令導入yasm環境變量。
$ export PATH="$PATH:/usr/local/yasm/bin"
5. 編譯ffmpeg
將下載的ffmpeg-1.2.1.tar.bz2,解壓到C:\msys\1.0\ffmpeg\ffmpeg-1.2.1
進入ffmpeg-1.2.1目錄,分別執行命令:
$ ./configure --enable-shared --disable-static --enable-memalign-hack
$ make
$ make install
本次忘記指定安裝路徑了,就生成在默認路徑下/usr/local,編譯選項沒有disable一些選項,編譯時間有點長。
下面多出來四個文件夾bin lib include share,對應ffmpeg的編譯結果。
6. 使用ffmpeg.exe如果提示缺少pthreadgc2.dll,就把下載來的pthreadgc2.dll放到這個bin文件夾。
下面來看看編譯結果。

