编译带自定义库的FFmpeg时遇-lnuma未找到及x265检测失败错误
FFmpeg编译时
-lnuma找不到的问题解决 问题描述
从源码编译带自定义库的FFmpeg时,其他依赖包编译正常,但FFmpeg编译步骤失败,日志底部报错:
/usr/bin/ld: cannot find -lnuma: No such file or directory collect2: error: ld returned 1 exit status ERROR: x265 not found using pkg-config
此前运行编译脚本一切正常,执行find /usr/lib -name libnuma\* -ls显示系统中已存在NUMA库文件:
4987897 48 -rw-r--r-- 1 root root 48152 Mar 24 2022 /usr/lib/x86_64-linux-gnu/libnuma.so.1.0.0 4992286 76 -rw-r--r-- 1 root root 77086 Mar 24 2022 /usr/lib/x86_64-linux-gnu/libnuma.a 4987896 0 lrwxrwxrwx 1 root root 16 Dec 29 12:03 /usr/lib/x86_64-linux-gnu/libnuma.so.1 -> libnuma.so.1.0.0 4992287 0 lrwxrwxrwx 1 root root 16 Mar 24 2022 /usr/lib/x86_64-linux-gnu/libnuma.so -> libnuma.so.1.0.0
-lnuma是什么?
-lnuma是GCC链接器的参数,用于指定链接NUMA(非统一内存访问)库。这个库主要用于多CPU架构下优化内存分配策略,x265编码器在启用NUMA支持时会依赖该库。
问题分析
系统中已存在NUMA库文件,但链接器仍找不到,可能的原因:
- 动态库缓存失效:系统的
ldconfig缓存未更新,链接器无法识别库文件的软链接 - 链接路径优先级问题:编译脚本中的库搜索路径顺序导致链接器先查找其他目录,未搜到
/usr/lib/x86_64-linux-gnu下的NUMA库 - 编译脚本变更:脚本更新后,x265的编译配置新增了NUMA依赖,但系统的库链接配置未同步
解决办法
- 刷新动态库缓存:执行以下命令更新系统动态库索引
sudo ldconfig - 手动指定库搜索路径:在FFmpeg的configure命令中添加额外链接参数,明确指定NUMA库所在目录
./configure --extra-ldflags="-L/usr/lib/x86_64-linux-gnu" [其他原有参数] - 禁用x265的NUMA支持:如果不需要多CPU内存优化,可在x265的编译配置中添加
--disable-numa,取消对NUMA库的依赖 - 安装NUMA开发包:若缺少NUMA相关头文件或开发组件,执行以下命令安装(Debian/Ubuntu系统)
sudo apt-get install libnuma-dev
内容的提问来源于stack exchange,提问作者slyfox1186
相关产品推荐
相关产品推荐

