win10下MinGW 編譯x264,解決make:*** [libx264.a] Error 5

最近準(zhǔn)備學(xué)習(xí)一下OBS Studio,在編譯OBS時發(fā)現(xiàn)需要使用x264庫,在windows下使用MinGW編譯時遇到錯誤,最終解決了這個錯誤,在此記錄下編譯過程,以便以后再遇到這個問題時可以回來查閱。

make:*** [libx264.a] Error 5

編譯環(huán)境:Windows 10 ltsc 2019、Visual Studio 2017 Community、MinGW

注意:我用的windows是一個干凈的環(huán)境,在虛擬機中全新安裝的。

1?下載X264代碼

下載代碼:https://www.videolan.org/developers/x264.html


2 準(zhǔn)備交叉編譯環(huán)境


2.1 下載MinGW

下載地址:https://osdn.net/projects/mingw/releases/

2.2 安裝MinGW

MinGW安裝比較簡單,直接一直下一步就可以了,最后安裝組件的時候選擇下面圖片中幾個組件就可以了。


2.3 下載NASM

下載地址:https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/win32/


解壓zip包中的nasm.exe到MinGW的C:\MinGW\msys\1.0\bin目錄。

3 編譯x264

(1) 解壓縮下載的x264代碼,我解壓到下面目錄

(2)運行C:\MinGW\msys\1.0\msys.bat腳本,輸入cd /d/clib/x264-master進入到代碼目錄


(3)? 執(zhí)行./conifgure --enable-shared命令編譯動態(tài)庫,需要花費一點時間,等待完成

(4)執(zhí)行make編譯x264,本以為可以順利編譯成功,到最后執(zhí)行g(shù)cc-ar rc libx264.a命令時會報一個錯誤,如下

(5)解決make錯誤,修改configure文件

? ??????注意make沒有出錯的朋友,請忽略這一步驟,文章最后會給出解決該問題的思路過程

修改成下面的樣子,就是把AR=""和RANLIB=""替換成跟else語句下面一樣的。

修改完畢后,再次執(zhí)行./configure --enable-shared后make,編譯成功

(6) 執(zhí)行make install后,以后需要用到了.h、.dll和.lib文件會在MinGW下面的usr/local目錄

(7) 拷貝文件至新目錄,我保持目錄結(jié)構(gòu)如下,即與make install生成的一樣,lib目錄下.a文件,可以直接改名為.lib文件使用


(8)?測試運行x264.exe,出現(xiàn)下面提示表示編譯的沒有問題

4 解決make報錯的過程

解決make時的錯誤,觀察了最后一行命令時在 gcc-ar rc libx264.a時出現(xiàn)錯誤,于是百度了一下gcc-ar,發(fā)現(xiàn)都是關(guān)于ar工具的資料,懷疑是不是MinGW安裝的有問題。

于是用everything搜索了一下 ar.exe ,發(fā)現(xiàn)在MinGW目錄下ar.exe有兩個其中一個gcc-ar.exe只有81kb,另外一個有946kb。

我將上面的gcc-ar rc libx264.a xxx.o...(省略N多.o文件)復(fù)制一遍,替換為ar rc libx264.a xxx.o...(省略N多.o文件),最后執(zhí)行成功了(忘記截圖)。

于是我把gcc-ar.exe名稱修改為gcc-ar.exe.bk,然后復(fù)制了一個ar.exe名稱改為gcc-ar.exe。

再次執(zhí)行./configure --enable-shared,然后make,在gcc-ar那一步?jīng)]有報錯,但是在gcc-ranlib這一步報錯了(此處忘記截圖)。

我又查看了gcc-ranlib.exe文件,發(fā)現(xiàn)也只有81kb,然后有一個rablib文件946kb。

此時我在想是不是可以不復(fù)制exe文件,而通過修改配置文件來解決這個問題。

打開代碼目錄下的configure文件,搜索了一下 gcc-ar,找到下面代碼。直接將下面藍色行代碼復(fù)制替換紅色行。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容