如果下载了源码,可在 ffmpeg-4.3.1/doc/examples/ 中查看
在Ubuntu 16.04 上,通过源码安装好 ffmpeg 后,运行官方例子
gcc -o demux demuxing_decoding.c -I /usr/local/include/ -L /usr/local/lib -lavcodec -lavformat -lavutil
由于安装时 configure 路径为 /usr/local,头文件会安装在 /usr/local/include,这是 linux 头文件默认搜索路径,所以 -I /usr/local/include/
并不需要。
gcc -o demux demuxing_decoding.c -L /usr/local/lib -lavcodec -lavformat -lavutil
但是,如果不指定动态库加载路径 -L /usr/local/lib
,-lavcodec 的路径会默认是 /usr/lib/x86_64-linux-gnu/libavcodec-ffmpeg.so.56,但正确路径应该是 /usr/local/lib/libavcodec.so.58。这是因为之前按照 官方指导 安装 OpenCV 时,使用 apt 按要求安装了相应的 libavcodec 库…
[required] sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
gcc 编译程序时查找 so 动态库顺序如下:
-
gcc 编译时参数 -L 指定的路径
-
环境变量 LIBRARY_PATH
-
系统默认库位置 /lib,/usr/lib
在 ~/.bashrc 文件中配置环境变量
# 编译时链接动态库路径
export LIBRARY_PATH=/usr/local/lib/:$LIBRARY_PATH
# 运行时链接动态库路径
export LD_LIBRARY_PATH=/usr/local/lib/:$LD_LIBRARY_PATH
使 ~/.bashrc 文件重新生效
source ~/.bashrc
这样只需要
gcc -o demux demuxing_decoding.c -lavcodec -lavformat -lavutil