如何让ffmpeg运行时从当前目录加载库,而不是从/lib64

程序在linux下运行时,一般从 /lib64 目录下加载依赖的库文件,如xxx.so.

有时候,系统里没有这些库,也不想从系统目录下加载,怎么办呢?

看下面的调整过程。

使用的源代码是 ffmpeg-6.1.tar.xz

解压后,进入到ffmpeg-6.1

bash 复制代码
./configure  --enable-libmp3lame  --enable-rpath  --prefix=/usr/local/ffmpeg

注意:这里的--enable-rpath 非常重要,只有加上这个选项,后面才能指定加载库的路径。

这里,也不需要 --libdir='$ORIGIN' 这个参数。

执行完上面的命令,会生成:ffmpeg-6.1/ffbuild/config.mak 文件,

主要就是修改这个文件了。

把 LDEXEFLAGS= -Wl,-rpath,/usr/local/ffmpeg/lib 改成:LDEXEFLAGS= -Wl,-rpath,'$$ORIGIN'

LDSOFLAGS= -Wl,-rpath,/usr/local/ffmpeg/lib 改成:LDSOFLAGS= -Wl,-rpath,'$$ORIGIN'

注意:这里ORIGIN 要加单引号,且前面是2个$符号

  • 使用 $ORIGIN : 当你设置为 $ORIGIN 时,表示你希望库路径相对于可执行文件的位置。这在部署时非常有用,因为它允许可执行文件和库文件在同一目录结构中移动,而无需修改路径。

保存,然后make 即可。

最后,生成的ffmpeg 或者ffprobe 就可以从自己当前所在的目录查找库文件了,

比如libxcb.so.1 等。

相关推荐
韩曙亮12 小时前
【FFmpeg】FFmpeg 内存结构 ③ ( AVPacket 函数简介 | av_packet_ref 函数 | av_packet_clone 函数 )
ffmpeg·音视频·avpacket·av_packet_clone·av_packet_ref·ffmpeg内存结构
oushaojun216 小时前
ubuntu中使用ffmpeg和nginx推流rtmp视频
nginx·ubuntu·ffmpeg·rtmp
莫固执,朋友16 小时前
网络抓包工具tcpdump 在海思平台上的编译使用
网络·ffmpeg·音视频·tcpdump
lxkj_202417 小时前
修改ffmpeg实现https-flv内容加密
网络协议·https·ffmpeg
cuijiecheng201817 小时前
音视频入门基础:MPEG2-TS专题(6)——FFmpeg源码中,获取MPEG2-TS传输流每个transport packet长度的实现
ffmpeg·音视频
VisionX Lab1 天前
数据脱敏工具:基于 FFmpeg 的视频批量裁剪
python·ffmpeg·音视频
柳鲲鹏2 天前
全网首发:Ubuntu编译跨平台嵌入式支持ffmpeg的OpenCV
linux·ubuntu·ffmpeg
冰山一脚20132 天前
ffplay音频SDL播放处理
ffmpeg
cuijiecheng20182 天前
音视频入门基础:MPEG2-TS专题(7)——FFmpeg源码中,读取出一个transport packet数据的实现
ffmpeg·音视频
Maxwellhang2 天前
【java-ffmpeg】java 内存测试和集成
java·ffmpeg·jni