最近準(zhǔn)備學(xué)習(xí)一下OBS Studio汞贸,在編譯OBS時(shí)發(fā)現(xiàn)需要使用x264庫(kù)绳军,在windows下使用MinGW編譯時(shí)遇到錯(cuò)誤,最終解決了這個(gè)錯(cuò)誤矢腻,在此記錄下編譯過(guò)程门驾,以便以后再遇到這個(gè)問(wèn)題時(shí)可以回來(lái)查閱。
make:*** [libx264.a] Error 5
編譯環(huán)境:Windows 10 ltsc 2019多柑、Visual Studio 2017 Community奶是、MinGW
注意:我用的windows是一個(gè)干凈的環(huán)境,在虛擬機(jī)中全新安裝的竣灌。
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安裝比較簡(jiǎn)單聂沙,直接一直下一步就可以了,最后安裝組件的時(shí)候選擇下面圖片中幾個(gè)組件就可以了帐偎。
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)運(yùn)行C:\MinGW\msys\1.0\msys.bat腳本削樊,輸入cd /d/clib/x264-master進(jìn)入到代碼目錄
(3)? 執(zhí)行./conifgure --enable-shared命令編譯動(dòng)態(tài)庫(kù),需要花費(fèi)一點(diǎn)時(shí)間兔毒,等待完成
(4)執(zhí)行make編譯x264漫贞,本以為可以順利編譯成功,到最后執(zhí)行g(shù)cc-ar rc libx264.a命令時(shí)會(huì)報(bào)一個(gè)錯(cuò)誤育叁,如下
(5)解決make錯(cuò)誤迅脐,修改configure文件
? ??????注意:make沒(méi)有出錯(cuò)的朋友,請(qǐng)忽略這一步驟豪嗽,文章最后會(huì)給出解決該問(wèn)題的思路過(guò)程
修改成下面的樣子谴蔑,就是把AR=""和RANLIB=""替換成跟else語(yǔ)句下面一樣的。
修改完畢后龟梦,再次執(zhí)行./configure --enable-shared后make隐锭,編譯成功
(6) 執(zhí)行make install后,以后需要用到了.h计贰、.dll和.lib文件會(huì)在MinGW下面的usr/local目錄
(7) 拷貝文件至新目錄钦睡,我保持目錄結(jié)構(gòu)如下,即與make install生成的一樣躁倒,lib目錄下.a文件荞怒,可以直接改名為.lib文件使用
(8)?測(cè)試運(yùn)行x264.exe,出現(xiàn)下面提示表示編譯的沒(méi)有問(wèn)題
4 解決make報(bào)錯(cuò)的過(guò)程
解決make時(shí)的錯(cuò)誤秧秉,觀(guān)察了最后一行命令時(shí)在 gcc-ar rc libx264.a時(shí)出現(xiàn)錯(cuò)誤褐桌,于是百度了一下gcc-ar,發(fā)現(xiàn)都是關(guān)于ar工具的資料象迎,懷疑是不是MinGW安裝的有問(wèn)題撩嚼。
于是用everything搜索了一下 ar.exe ,發(fā)現(xiàn)在MinGW目錄下ar.exe有兩個(gè)其中一個(gè)gcc-ar.exe只有81kb,另外一個(gè)有946kb完丽。
我將上面的gcc-ar rc libx264.a xxx.o...(省略N多.o文件)復(fù)制一遍恋技,替換為ar rc libx264.a xxx.o...(省略N多.o文件),最后執(zhí)行成功了(忘記截圖)逻族。
于是我把gcc-ar.exe名稱(chēng)修改為gcc-ar.exe.bk蜻底,然后復(fù)制了一個(gè)ar.exe名稱(chēng)改為gcc-ar.exe。
再次執(zhí)行./configure --enable-shared聘鳞,然后make薄辅,在gcc-ar那一步?jīng)]有報(bào)錯(cuò),但是在gcc-ranlib這一步報(bào)錯(cuò)了(此處忘記截圖)抠璃。
我又查看了gcc-ranlib.exe文件站楚,發(fā)現(xiàn)也只有81kb,然后有一個(gè)rablib文件946kb搏嗡。
此時(shí)我在想是不是可以不復(fù)制exe文件窿春,而通過(guò)修改配置文件來(lái)解決這個(gè)問(wèn)題。
打開(kāi)代碼目錄下的configure文件采盒,搜索了一下 gcc-ar旧乞,找到下面代碼。直接將下面藍(lán)色行代碼復(fù)制替換紅色行磅氨。