win7下ffmpeg编译动态链接库整理
1.寫在ffmpeg編譯前
關于ffmpeg的編譯過程google一搜,一大堆,ffmpeg編譯真的有那么難么?在我編譯成功后回頭來看,網上的資料過多,反而使自己走了很多的彎路。即便有些樓主親自測試后編譯成功了,由于受機器的環境、ffmpeg版本、以及個人操作的影響,導致在自己編譯的時候不成功。
有些帖子發表的時間已經很久了,其中提到的到的軟件現在也有了很大的更新,就如我后面提到的MinGW,較新的版本直接安裝就可以了,無需手動更新一些文件。我寫這篇文章的時間是2011/08/30。
系統環境:
操作系統:Windows?7?家庭普通版?Service?Pack?1
Ffmpeg版本:ffmpeg-0.6.3,ffmpeg-0.6
開發環境:VS2008
注:
1)?win7下的用戶要特別注意了,之前我在參考:http://www.chinavideo.org/viewthread.php?tid=9129&extra=page%3D1&page=1?
中的帖子編譯ffmpeg-0.6.3時,能夠生成lib文件,但在調用這些lib庫時卻出現了莫名奇妙的問題,而且在我make?install時也出現了permission?deny的錯誤。這想問題應該出在,Msys和MinGW時沒有使用管理員權限安裝。
2)?關于ffmpeg的版本,我在編譯ffmpeg-0.6.3時,能夠生成lib文件,但在編譯ffmpeg-0.6時,卻生成的是.dll.a和.def后綴的文件,關于這個問題,文章后面會有解決方法。
1.1?MinGW安裝以及ffmpeg0.6編譯lib
安裝過程和相關軟件的下載是參照這篇帖子:http://zhaostudy2.blog.163.com/blog/static/13535020520110179271153/
但仍有幾個重要的細節需要補充下:
1)?Win7下的用戶在安裝MinGW時,要選擇“以管理員身份運行”,這樣會避免在編譯ffmpeg-0.6.3時,生成的lib文件不能用的問題。同樣的,在運行Msys時,也要選擇“以管理員身份運行”。
2)?樓主提供的在csdn上提供的ffmpeg0.6我在照他的配置后并不能生成動態庫(lib),在官方網站上下載的ffmpeg0.6還是不能自動生成動態庫(lib),有可能是自帶MakeFile的問題。在該文章的留言中,也有用戶反映了這個問題。
3)?Source?forge上面的那個鏈接頁面已經更改,“Tools”文件夾已經消失,還好樓主在csdn上有備份,不得不佩服樓主的先見之明。
1.1.1?ffmpeg0.6編譯后不能生成lib文件的解決步驟:
以make后的ffmpeg0.6\libavcodec目錄下為例,注意到在該目錄中有一個avcodec-52.def的文件,對于該文件,在VS中是可以直接將def文件轉換成lib文件的!
關于如何轉換,直接參考:
http://blog.163.com/zhucongdzkd@126/blog/static/1399971932010814111127686/
里面也提到關于“沒有找到mspdb80.dll,因此這個應用程序未能啟動。重新安裝應用程序可能會修復此問題?!钡慕鉀Q方案。
我的命令行參數如下圖所示:
生成的lib可用!問題解決!
2.最終的編譯文檔
為防止前面引用的文章無法訪問,我再將我的編譯過程整理如下:
2.1MinGW下載及安裝
1)?MinGW下載地址:http://download.csdn.net/source/2988856
2)?MinGW安裝:win7下選擇“以管理員身份運行”運行exe文件,后面步驟使用默認選項安裝即可
2.2下載及編譯ffmpeg0.6.3動態鏈接庫
Ffmpeg0.6.3是可以直接編譯生成動態鏈接庫及.lib文件的。
Ffmpeg0.6.3官方下載地址:http://ffmpeg.org/releases/ffmpeg-0.6.3.tar.bz2
“以管理員身份運行”運行MinGW32\MSYS\msys.bat文件
執行以下3條命令,
漫長的等待...
執行完以上3條命令后在E:\ffmpeg0.6.3\libavcodec下就可以找到avcodec-52.lib和avcodec-52.dll,其他幾個lib開頭的文件夾下也有相應的.lib文件和.dll文件,至此,ffmpeg編譯動態鏈接庫成功完成。
2.3下載及編譯ffmpeg0.6動態鏈接庫
Ffmpeg0.6官方下載地址:http://ffmpeg.org/releases/ffmpeg-0.6.tar.bz2
前面步驟與編譯ffmpeg0.6時一致,但只生成了dll文件和def文件,沒有生成lib文件。
后面就要使用VS2008中提供的lib.exe工具將def文件轉換成lib文件。
1)?在C:\Program?Files\Microsoft?Visual?Studio?9.0\VC\bin下雙擊lib.exe文件。若彈出“沒有找到mspdb80.dll,因此這個應用程序未能啟動。重新安裝應用程序可能會修復此問題。”
將C:\Program?Files\Microsoft?Visual?Studio?9.0\Common7\IDE\mspdb80.dll復制到C:\Program?Files\Microsoft?Visual?Studio?9.0\VC\bin下,再次雙擊lib.exe文件,lib.exe就可以正常啟動了。
注意:為避免今后使用VS遇到問題,在成功生成lib文件后,要將mspdb80.dll從C:\Program?Files\Microsoft?Visual?Studio?9.0\VC\bin目錄下刪除。
2)?假設avcodec-52.def文件位于C:\test目錄下,執行如下命令:
lib?/out:c:\test\avcodec.lib?/machine:IX86?/def:C:\test\avcodec-52.def
即可生成lib文件
至此,所有問題圓滿解決
重要補充!!!
與我的解決方法很相似,但更加詳細,還提到了無法生成.def文件時,修改config.mak文件的方法。http://blog.csdn.net/xiajia/article/details/6533182
總結
以上是生活随笔為你收集整理的win7下ffmpeg编译动态链接库整理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Asterisk权威指南/第三章 安装A
- 下一篇: CentOS卸载OpenJDK并安装Su