编译过程十分繁琐复杂,花了不少时间总结如下:
通过windows + MinGW + MSYS编译
到这http://sourceforge.net/projects/mingw/files/下载最新
点击Download mingw-get-setup.exe,我采用了默认安装,路径C:\MinGW;
安装mingw,我们点击左侧栏中的“Basic Setup”项,接着在右侧栏的每一项上点击右键,选择“Mark For Installation"项,然后那个选项的白框上就会出现一个箭头,表示已选中。
我们点击菜单栏中的”Installation“项中的”Apply Changes“选项,程序就开始自动下载安装MinGW组件包了。
到此MinGW 和MSYS都安装好了。
2、进入mingw安装目录下:C:\MinGW\msys\1.0找到msys.bat文件,记事本打开编辑,在最前边加上一行:
call "D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\vcvars32.bat"
效果如下图:
这样做的目的是链接VS,来生成window下的库文件。上面的路径是对应你装的VS路径,我的环境是VS2015
注意:这一行必需处在此文件的最开始处(我把它放到除去rem开头之外的最前面还是不能正常工作,不知道为啥),同时修改你的vc路径,我的是vs2015,所以是14.0,此修改指定vc的vcvars32.bat文件位置并修改它
如果是你的os是64位的,还需要对该文件的 _WindowsNT 处进行修改,紧跟这一行的下面一行添加:
rem Hopefully a temporary workaround for getting MSYS shell to run on x64
rem (WoW64 cmd prompt sets PROCESSOR_ARCHITECTURE to x86)
if not "x%PROCESSOR_ARCHITECTURE%" == "xAMD64" goto _NotX64
set COMSPEC=%WINDIR%/SysWOW64/cmd.exe
%COMSPEC% /c %0 %1 %2 %3 %4 %5 %6 %7 %8 %9
goto EOF
:_NotX64
效果如下:
关于64位的部分,我没有试,只不过是直接从说明处到拷贝过来
3、下载最新的ffmpeg:http://ffmpeg.zeranoe.com/builds/source/ffmpeg/
解压到工作目录。。。
进入ffmpeg源码目录,编译:
./configure --enable-memalign-hack --disable-debug
出现的第一个错误是“gcc is unable to create an executable file”,如下:
参考:http://www.07net01.com/2014/09/169624.html
原因是gcc的系统变量没有设置
解决办法是添加环境变量C:/MinGW/bin
第二个错误是"yasm/nasm not found or too old"
原因是没有安装yasm,解决办法是安装yasm
3.下载最新的yasm:http://yasm.tortall.net/Download.html
选择对应你系统的yasm.exe (我的系统是win7 32位的选择的Win32.exe);
将下载的yasm*.exe改名为yasm.exe 放入C盘下/windows/system32/目录下,这样就省去了环境变量的设置 。
参考链接:http://blog.csdn.net/ranxiedao/article/details/16359183
原因是没有安装pkg-config
解决办法是安装pkg-config
下载pkg-config放到bin目录下:https://pkg-config.freedesktop.org/releases/
它的介绍:https://www.freedesktop.org/wiki/Software/pkg-config/
需要下载的文件:pkg-config-0.23-2.zip
http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/pkg-config-0.23-2.zip
glib_2.18.4-1_win32.zip
http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.18/glib_2.18.4-1_win32.zip
只需要用到其中的 libglib-2.0-0.dll 文件,其他的文件可以扔掉。
参考:http://mysuperbaby.iteye.com/blog/906223
4、开始编译:
3.1 编译静态库
A. 配置
在shell提示符下输入:
这个过程要花费较长的时间,开始会有较长的时间没有反应。其中的prefix是msys的安装路径
B. 编译
make
C. 安装
make install
安装只是把要开发使用的库文件拷贝到c:/msys/1.0/lib/目录中,头文件拷贝到c:/msys/1.0/include/目录中。
产生的库文件为.a文件
3.2 编译动态库
动态库和静态库只在配置上的差别,配置如下:
./configure
后面的步骤一样:
make
make install
在开始编译之前,可以把原来编译的目标 文件清除掉:
make distclean
动态编译应该是会产生lib文件,但是我编译之后一直没有产生,所以后面的开发,用的都是静态库
编译之后的dll文件被放到了ffmpeg目录下,可以搜索查看它们
Make的时候出现如下一个错误:
这个错误弄了好久也找不到答案。。。以后有机会再弄