windows下編譯x264庫

2021-09-02 03:47:42 字數 2791 閱讀 3658

首先說一下mingw和msys是幹啥的,mingw本質上乙個開發工具鏈,它提供了針對win32應用的gnu工具鏈,以及對等於windows sdk的標頭檔案和用於mingw版本鏈結的庫檔案(so,a等,而不是msvc的dll,lib),所以如果程式只用到c/c++標準庫,而不用到posix api,是可以用mingw在windows環境下編譯的,編譯出來的靜態庫,動態庫是可鏈結的,並且可以通過msvc來鏈結的。所以就跟原生的windows程式一樣,只是編譯的工具不同。

msys是提供乙個除了開發工具鏈以外的類unix環境,就是模擬了unix的目錄結構和shell環境。

msys2和mingw-w64可以理解為msys和mingw的公升級版。

下面我要編譯的x264,現在已經不提供msvc的編譯配置,而是提供的gcc的編譯配置,而的**本身是可以在window下編譯的,所以直接使用mingw來編譯是最方便的。我要編譯出64位版本和32位版本的x264靜態庫,而mingw只是提供32位環境,所以我選擇通過ming-w64+msys2作為編譯環境。

我們先安裝msys2,安裝比較簡單直接下一步下一步就好了。通過msys2的pcaman包管理工具來安裝mingw-w64,這種方式最簡單。

在msys2的安裝目錄下,執行msys2.exe

通過pacman命令來安裝mingw-w64,mingw-w64本身有兩個版本:mingw-w64-x86_64

mingw-w64-i686,乙個是64位,乙個是32位。

pacman -s mingw-w64-x86_64-toolchain

pacman -s mingw-w64-i686-toolchain

通過上面兩個命令分別安裝64位工具鏈的和32位的工具鏈,工具鏈中已經包含了gcc,g++,gdb,make的等工具。如下圖:

安裝好後,在msys2下會分別有mingw32.exemingw64.exe兩個執行環境,如下圖:

x264的編譯需要注意一定要配置開啟彙編,因為x264對一些常見的cpu架構做了彙編優化,如果不配置使用彙編,編碼效能會大大的降低。

針對windows的x86平台,先安裝nasm,下面演示64位版本,通過mingw64.exe啟動64位環境,安裝nasm,通過如下命令:

pacman -s nasm
進入x264原始碼目錄,通過configure配置編譯選項,如下:

./configure --host=x86_64-w64-mingw32 --enable-static --disable-cli
configure結果如下:

紅框標識的需要注意下,分別表示:64位,關閉命令列模式,彙編開啟,再直接make即可

編譯32位靜態流程一樣,通過mingw32.exe啟動32位環境,安裝nasm,使用如下configure配置:

./configure --host=i686-w64-mingw32 --enable-static --disable-cli
引數如下配置,同樣注意下需要的配置項。再make即可。

注意: 在configure的過程中可能會報錯,這時可以檢視下config.log的具體報錯資訊,做相應修改即可。

這裡編譯出來的libx264.a是需要使用msvc來鏈結到目標程式的,關於msvc如何使用mingw的庫,這裡有幾點需要了解的:

編譯出來的靜態庫是以.a結尾的,如果編譯的是動態庫,則得到:lib***.dll.a,lib***.dll。.dll.a是動態的匯出庫,lib***.dll是在程式執行中所需要的。這個跟msvc的機制是一樣的

lib***.a這種型別的 c++ 庫是沒有辦法使用的,因為 msvc 使用靜態庫格式是 lib***.lib。 .a 和 .lib 格式的c++庫內部結構不一樣,直接使用會報錯說格式不對。

lib***.dll這種型別的動態庫也沒有辦法直接使用。mingw使用gcc編譯器,而msvc使用的是微軟的編譯器 cl。這兩種方式對於c++的name mangling的實現方式不一樣。所以沒有辦法直接在msvc上使用mingw 編譯的庫檔案。

對c的名稱是可以不進行name mangling的,所以為了能夠使得 msvc能夠使用mingw編譯的c++庫,需要給庫新增一層c介面,並給這些c介面加上: extern 「c」。

參考x264提供的介面已經新增了extern "c"所以這個靜態庫可以直接使用。在鏈結目標程式時,可能會報mingw中的某個函式找不到定義,所以需要將libmingw32.a

libmingwex.alibmingwthrd.a都鏈結上,這個三個庫在對應的64位或32位的mingw-w64安裝目錄中。

windows環境下編譯最新的x264庫

解壓即可 命令如下 configure enable shared make 四 使用pexports工具,將庫匯出 命令如下 pexports libx264 114.dll libx264 114.def 五 使用lib工具匯出lib庫 命令如下 lib machine i386 def lib...

編譯安裝x264

網上也有相應的教程,之所以在這裡重申一遍,是因為我試了網上很多的編譯方法,都出現了問題,為此將此編譯安裝方法記錄下來。首先是 獲取x264 的 git clone git linux 下最簡單編譯步驟 1.切換至源 目錄 2.輸入 configure enable shared enable sta...

ubuntu 下安裝x264庫

安裝依賴的包 code sudo apt get update sudo apt get install build essential git core checkinstall texi2html libfaac dev libopencore amrnb dev libopencore amr...