linux 编译 与 链接

编译

编译阶段遇到的问题往往是 头文件找不到

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 库顺序如下:

  1. gcc 编译时参数 -L 指定的路径

    gcc -o demux demuxing_decoding.c -L /usr/local/lib -lavcodec -lavformat -lavutil
    
  2. 环境变量 LIBRARY_PATH

    export LIBRARY_PATH=LIBDIR1:LIBDIR2:$LIBRARY_PATH
    
  3. 系统默认库位置 /lib,/usr/lib

猜你喜欢

转载自blog.csdn.net/weixin_43742643/article/details/113812403