日期:2014-05-17  浏览次数:20758 次

手把手教你在Windows下使用MinGW编译libav

手把手教你在Windows下使用MinGW编译libav 

libav是在Linux下使用纯c语言开发的,不可避免的,libav源码使用了一些gcc的特性,那么在Windows下很难使用VC编译,但是使用MinGW编译却简单多了,下面我将根据自己的经历逐步介绍使用MinGW编译libav的过程以及在此过程中遇到的问题及其解决方法。

1      安装MinGW编译环境

1.1    安装MinGW

l  下载和运行最新的mingw-get-inst版本。

l  选择安装MinGW的目录,注意:安装目录的路径中不能包含空格符。

l  安装可选的组件:C++编译器、Forthan编译器、Objective-C编译器、Ada编译器和MSYS。

 

图1:选择需要安装的组件

 

由于我们需要使用MinGW编译libav,因此除了C编译器之外,还需要选择C++编译器和MSYS,如图1所示。

接下来,安装程序会下载并运行mingw-get CLI安装程序安装GCC 。取决于你的网络状况,这个过程可能会持续数分钟。在使用MinGW之前,请将${MinGWDir}\bin添加到PATH环境变量,其中${MinGWDir}是MinGW的安装目录,默认情况下${MinGWDir}=C:\MinGW

安装完成后,打开开始菜单 ->程序 -> MinGW -> MinGW Shell,运行MinGW

1.2    安装coreutils

请检查${MinGWDir}\msys\1.0\bin(默认为C:\MinGW\msys\1.0\bin)下有没有pr.exe,如果没有,那么在编译libav过程中,执行./configure会报错:pr command not found

下载coreutils-win32-5.3.0-bin.zip,解压并将bin目录下的内容拷贝到${MinGWDir}\msys\1.0\bin(默认为C:\MinGW\msys\1.0\bin)下。

1.3    安装yasm.exe

编译libav需要用到yasm.exe,如果你的系统中没有yasm.exe,执行./configure会报错:yasm not found。下载Windows 32位版本的yasm.exe(如果使用64位系统,下载64位的yasm.exe)。

下载完成之后,重命名为yasm.exe,并将之拷贝到${MinGWDir}\msys\1.0\bin(默认为C:\MinGW\msys\1.0\bin)下。

到此为止,编译环境已经搭建完成。

2      安装git

libav是使用git开发的,因此你需要安装一个git客户端来取得git的源代码。

下载git客户端,默认安装即可。安装完成之后,打开 开始菜单 -> 程序 -> Git-> Git Bash 运行git控制台。

Git Bash是一个类Linux Shell控制台,其用法与Linux下的Bash一致。

3      编译libx264

如果你运行libav下的./configure时,启用了--enable-libx264选项,那么在编译过程中,libav就会依赖libx264,因此你需要提前编译libx264。如果你不启用--enable-libx264选项,那么你可以跳过这一节。

3.1    获取libx264源码

新建一个目录用于存放libx264的源代码(例如我在D盘下新建了名为x264的目录),注意存放该代码的路径中不应该包含空格符

启动git bash,并进入刚才新建的目录。以我的为例,在git bash下输入cd /d/x264即可。

进入源码目录之后,在git bash中键入git clone git://git.videolan.org/x264.git。按回车之后git就会自动从源码库下载源码到本地。取决于你的网络状况,这个过程可能会持续数分钟。

3.2    编译libx264

代码下载完成之后,启动MinGW,并进入x264源码目录。以我的为例,在MinGW bash下输入cd /d/x264/x264即可。

输入./configure –help查看配置选项。你可以根据自己的需要选择配置选项。

我的配置选项是--enable-shared --disable-cli --enable-win32thread(推荐启用这个选项,否则编译出来的libx264会依赖MinGW的pthreadGC2.dll,这样你打包发行程序时就会额外附加一个dll文件)。

键入./configure --enable-shared --disable-cli --enable-win32thread,按回车,配置编译环境。配置成功之后,系统会提示:You can run ‘make’ or ‘make fprofiled’ now.

键入make命令,就会开始编译了,这个过程很快就结束,如果编译成功的话,你就能够在源码目录下面找到libx264-128.dll文件(取决于你的x264源码版本,128可能是一个其他的数字,不过这个版本号不能低于118,否则无法通过libav配置检查)和libx264.dll.a文件。

4      编译libav

4.1    配置libx264

如果你希望你的libav支持x264编码,那么在编译libav时,你的编译环境中就需要libx264库,否则配置libav时,会报错:ERROR: libx264 not found;如果你不需要x264,那么你可以跳过这一节。

将生成的libx264