/usr/bin/ld: /usr/local/ffmpeg/lib/libavformat.a(aviobuf.o): in function `ff_crc04C11DB7_update':
/home/ann/FFmpeg/ffmpeg/libavformat/aviobuf.c:568: undefined reference to `av_crc_get_table'
/usr/bin/ld: /home/ann/FFmpeg/ffmpeg/libavformat/aviobuf.c:568: undefined reference to `av_crc'
/usr/bin/ld: /usr/local/ffmpeg/lib/libavformat.a(aviobuf.o): in function `ff_crcEDB88320_update':
/home/ann/FFmpeg/ffmpeg/libavformat/aviobuf.c:574: undefined reference to `av_crc_get_table'
/usr/bin/ld: /home/ann/FFmpeg/ffmpeg/libavformat/aviobuf.c:574: undefined reference to `av_crc'
...................(省略)
在Linux下调用ffmpeg的库libavutil, libavformat 时,报出了以上一大堆错误。全是各种库找不到的问题。记录一下解决办法:将ffmpeg提供的所有.pc文件所在的路径加入环境变量PKG_CONFIG_PATH中,使用pkg-config对源代码编译链接。
在ffmpeg的安装目录中,ffmpeg在lib/提供了一个目录pkgconfig,里面存放了各种.pc文件。
在~/.bashrc末尾加上两行:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/ffmpeg/lib/pkgconfig/ export PKG_CONFIG_PATH
然后source .bashrc就行了。之后使用pkg-config进行编译链接:
gcc -o ffmpeg_dir ffmpeg_dir.c `pkg-config --cflags --libs libavutil libavformat`
编译成功:
pkg-config
pkg-config是Linux下的一个工具,可以用 sudo apt install pkg-config 安装。pkg-config 用于获得一个库/模块与编译链接相关的信息。如:
pkg-config libavutil --cflags --libs
获取与 libavutil 的include 地址以及库/模块的地址:
可用pkg-config显示的模块信息需要将对应的.pc文件加入环境变量PKG_CONFIG_PATH下。如,我这里libavutil.pc所在目录为/usr/local/ffmpeg/lib/pkgconfig, 所以只有当环境变量PKG_CONFIG_PATH包含路径/usr/local/ffmeg/lib/pkgconfig时,pkg-config libavutil --cflags --libs 才能输出该模块相关的信息。
或者:.pc文件在/usr/lib目录下。
标签:lib,ffmpeg,libavformat,编译,usr,Linux,config,pkg From: https://www.cnblogs.com/pkuqcy/p/18171235