一直想学ffmpeg源码,但是ffmpeg只支持gdb调试,它不能在VC上编译、断点调试。最近看到同事用code::blocks和Mingw编译x264,而x264也是不能在VC下编译的,因此尝试在code::blocks下编译ffmpeg,最终编译成功,而且能够断点调试。我编译的过程如下:
1、 从官网下载ffmpeg的源码,我下载的版本为ffmpeg-2.5.1
2、 将ffmpeg压缩包解压放到Mingw目录的:MinGW\msys\1.0\home\Administrator
3、 打开msys.bat进入ffmpeg目录,执行以下命令:
./configure --disable-shared --enable-static --enable-memalign-hack --prefix=E:/Tech/video/ffmpeg/ffmpeg_debug/ffmpeg_debug/compile/ffmpeg_output --disable-yasm --enable-pthreads
执行完后并不需要执行make
4、 打开codeblocks,File->New->Project,选择cnosole application,然后选择C,输入project title(我设成ffmpeg_debug)与path,compiler选择GNU GCC Complier,最后finish
5、 将configure完的ffmpeg代码放到code::blocks工作目录中
6、 在左侧栏workspace的ffmpeg_debug右键,选择Add files recursively,将configure后的ffmpeg代码添加进来
7、 接下来配置project,在左侧栏workspace的ffmpeg_debug右键选择Properties,补全Execution directory的路径,选择This is a custom Makefile
然后打开右下脚的project‘s build options,选择"Make Command",将所有$target删除
8、 右键工程,选择build options,选择"Make Command",将所有$target删除
9、 选择setting->complier,选择Mingw的路径,并在Additonal Paths添加路径,我没有使用mingw32-gcc.exe、mingw32-g++.exe,而是用gcc.exe,g++.exe(MinGW\bin目录下)。make.exe用MinGW\msys\1.0\bin目录下的
10、 用make生成exe,我们还需要设置exe的生成路径。右键工程,选择Properties,修改Output filenames,注意用的是ffmpeg_g.exe
11、 至此,我们完成整个工程的配置,接下来build,我们设置断点后,选择Debug->Start,就可以进入Debug模式了。我们还需要给程序传入参数,如下图即可完成。