编译
编译阶段遇到的问题往往是 头文件找不到
ffplay.c:57:17: fatal error: SDL.h: No such file or directory
这种情况下,检查 include 路径,可以使用 -I 添加头文件查找路径。可以参考 linux 头文件加载顺序
链接
编译成功后,链接阶段遇到的问题往往是 undefined reference to …
cmdutils.c:(.text+0x6f55): undefined reference to `av_log_set_level'
这种情况下应该检查链接库,可以使用 -L 指定链接库查找位置,或者添加环境变量 LIBRARY_PATH。链接时查找 so 库顺序如下:
-
gcc 编译时参数 -L 指定的路径
gcc -o demux demuxing_decoding.c -L /usr/local/lib -lavcodec -lavformat -lavutil
-
环境变量 LIBRARY_PATH
export LIBRARY_PATH=LIBDIR1:LIBDIR2:$LIBRARY_PATH
-
系统默认库位置 /lib,/usr/lib