1. 程式人生 > >libvpx在Windows下的編譯

libvpx在Windows下的編譯

       因為要實現一個基於libvpx的視訊編解碼庫,而軟體執行環境又是Windows下,因此寫這個部落格記錄自己的編譯過程,不少東西都是借用的前輩們的經驗,自己則是簡單地記錄一下。

       首先安裝Windows下的類linux環境mingw,也可以直接安裝msys2,msys2提供了Linux下的命令列工具和git等其他常用工具,同時提供了mingw環境,該環境可以提供gcc編譯器和C語言的標準標頭檔案和基本庫,可以滿足某些Windows下編譯程式需要Linux下標頭檔案支援的情況,可以通過Windows命令列進入msys2目錄下,執行msys2_shell.cmd,即可開啟一個類Linux終端,之後按照路徑home/Administrator/source進入指定目錄,libvpx專案可通過git clone直接從github獲得,路徑:

https://github.com/webmproject/libvpx.git

我需要獲得libvpx的靜態庫.lib,該類大型專案往往是通過makefile進行組織的,要想獲得個性化的makefile,則需要實現編寫合適的configure檔案,在Linux環境下可以通過./configure + option的方式生成,可以直接在libvpx目錄下進行配置,配置命令的格式為“./configure + 選項”,配置命令:

./configure --enable-static --target=x86-win32-vs2010 --enable-vp8-encoder --enable-vp8-decoder

第一個選項代表我想要獲得libvpx的靜態庫,第二個意為make的目標是生成x86—win32平臺下的VS解決方案,後面的選項則是對具體編解碼器的選擇。成功配置後將得到新的makefile檔案,直接輸入make命令,成功後將生成一個sln檔案,該檔案是VS工程的解決方案入口,開啟sln進行編譯,將會發生找不到標頭檔案類似的錯誤,比如:

fatal error C1083: Cannot open include file: 'libyuv/cpu_id.h': No such file or directory

開啟專案屬性—C/C++—general開啟專案的標頭檔案路徑,將/home/Administrator/source/libvpx改成“.”,因為home作為msys2的資源根目錄,該絕對路徑是針對msys2環境寫的,vs是不能找到的,因此將之替換成相對目錄即可。之後繼續build,生成了如下錯誤:

1>------ Build started: Project: gtest, Configuration: Debug Win32 ------

1>cl : Command line warning D9002: ignoring unknown option '/home/Administrator/source/libvpx\third_party\googletest\src\src\gtest-all.cc'

1>cl : Command line error D8003: missing source filename

發生該錯誤需要在工程裡面刪除gtest-all.cc,並重新將gtest-all.cc檔案(libvpx\third_party\googletest\src\src\gtest-all.cc)放到工程裡面。build即可生成vpxmt.lib