ffmpeg编译

参考资料:http://blog.csdn.net/funkri/article/details/10946027 一些第三方包.net

出错解决:facc安装出错:debug

对‘char* strcasestr(const char*, const char*)’的新声明

解决办法:vi common/mp4v2/mpeg4ip.h

删除第126行  char *strcasestr(const char *haystack, const char *needle);

而后 make clean  从新在 make

make install        调试

输入ffmpeg出错
code

ffmpeg: error while loading shared libraries: libavdevice.so.56: cannot open shared object file: No such file or directory
路径问题:blog

解决办法:ip

vi /etc/ld.so.conf源码

加入:/usr/local/lib编译

执行ldconfigclass

 

 

编译可调试的ffmpegffmpeg

./configure --help

看到了--enable-debug 和 --extra-cflags --extra-ldflags 这几个选项。

./configure --enable-shared --enable-gpl --enable-libmp3lame --enable-libx264 --enable-debug --extra-cflags=-g --extra-ldflags=-g

make

make install 

果真编译成功以后,源码出现一个ffmpeg_g ,而后gdb ./ffmpeg_g 开始调试

问题出现了,gdb可以成功读取ffmpeg_g的调试信息,但ffmpeg_g加载的.so动态库调试信息是无法读取到的。单步的时候根本进不到动态库里面。很奇怪,编译的时候明明已经带上了-g选项。

跳到libavcodec目录

gdb libavcodec.so

**

Reading symbols from /home/wans/source/ffmpeg-0.10.6/libavcodec/libavcodec.so...done.

提示调试信息读取成功。

接着跳到/usr/local/lib下面

gdb libavcodec.so

**

Reading symbols from /usr/local/lib/libavcodec.so...(no debugging symbols found)...done.

告诉找不到调试信息,到这儿基本上已经知道,make install 安装到/usr/local/lib下面的.so并非源码目录下面的。或者说make install只会安装不带调试信息的库文件(不知道怎么实现的,有知道的能够说下,在源码目录find 并无找到额外的so文件)。到这儿问题已经能够解决了。先把/usr/local/lib目录下面全部ffmpeg动态库删除,而后跳到源码目录下面。

sudo cp ./*/*.so* /usr/local/lib

以后果真能够正常调试ffmpeg,能够单步进到so库里面去了!!

相关文章
相关标签/搜索