參考資料: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庫裏面去了!!