[FFmpeg] 编译官方例子

官方例子地址

如果下载了源码,可在 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 动态库顺序如下:

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

  2. 环境变量 LIBRARY_PATH

  3. 系统默认库位置 /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

猜你喜欢

转载自blog.csdn.net/weixin_43742643/article/details/113790656
今日推荐