win10下MinGW 编译x264,解决make:*** [libx264.a] Error 5

最近准备学习一下OBS Studio,在编译OBS时发现需要使用x264库,在windows下使用MinGW编译时遇到错误,最终解决了这个错误,在此记录下编译过程,以便以后再遇到这个问题时可以回来查阅。

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

编译环境:Windows 10 ltsc 2019、Visual Studio 2017 Community、MinGW

注意:我用的windows是一个干净的环境,在虚拟机中全新安装的

1 下载X264代码

下载代码:https://www.videolan.org/developers/x264.html


2 准备交叉编译环境


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)  执行./conifgure --enable-shared命令编译动态库,需要花费一点时间,等待完成

(4)执行make编译x264,本以为可以顺利编译成功,到最后执行gcc-ar rc libx264.a命令时会报一个错误,如下

(5)解决make错误,修改configure文件

        注意make没有出错的朋友,请忽略这一步骤,文章最后会给出解决该问题的思路过程

修改成下面的样子,就是把AR=""和RANLIB=""替换成跟else语句下面一样的。

修改完毕后,再次执行./configure --enable-shared后make,编译成功

(6) 执行make install后,以后需要用到了.h、.dll和.lib文件会在MinGW下面的usr/local目录

(7) 拷贝文件至新目录,我保持目录结构如下,即与make install生成的一样,lib目录下.a文件,可以直接改名为.lib文件使用


(8) 测试运行x264.exe,出现下面提示表示编译的没有问题

4 解决make报错的过程

解决make时的错误,观察了最后一行命令时在 gcc-ar rc libx264.a时出现错误,于是百度了一下gcc-ar,发现都是关于ar工具的资料,怀疑是不是MinGW安装的有问题。

于是用everything搜索了一下 ar.exe ,发现在MinGW目录下ar.exe有两个其中一个gcc-ar.exe只有81kb,另外一个有946kb。

我将上面的gcc-ar rc libx264.a xxx.o...(省略N多.o文件)复制一遍,替换为ar rc libx264.a xxx.o...(省略N多.o文件),最后执行成功了(忘记截图)。

于是我把gcc-ar.exe名称修改为gcc-ar.exe.bk,然后复制了一个ar.exe名称改为gcc-ar.exe。

再次执行./configure --enable-shared,然后make,在gcc-ar那一步没有报错,但是在gcc-ranlib这一步报错了(此处忘记截图)。

我又查看了gcc-ranlib.exe文件,发现也只有81kb,然后有一个rablib文件946kb。

此时我在想是不是可以不复制exe文件,而通过修改配置文件来解决这个问题。

打开代码目录下的configure文件,搜索了一下 gcc-ar,找到下面代码。直接将下面蓝色行代码复制替换红色行。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。