【ffmpeg编译问题】recompile with -fPIC /usr/bin/ld: 最后的链结失败: 错误的值

article/2025/10/5 17:10:55

安装流程参考
最新版本ffmpeg6.0源码安装+vscode开发环境搭建!

1、配置

下好ffmpeg后,设置配置

sudo ./configure --prefix=/usr/local/ffmpeg --enable-gpl --enable-shared --enable-version3 --enable-nonfree --enable-pthreads --enable-libx264 --enable-libx265 --enable-libfdk-aac --enable-pic

这些配置的作用如下:

  • –prefix=/usr/local/ffmpeg :设置安装到什么路径下。
    仅影响后续make install时,将编好的产物复制到什么路径下,主要包含so、a、头文件、可执行应用程序;以及make uninstall时,去哪里删除这些东西。
    如果缺省,则库文件安装到/usr/local/lib,头文件安装到/usr/local/include,可执行应用程序安装到/usr/local/bin

  • –enable-shared:构建共享库(默认关闭),编译安装完,才会有.so动态链接库文件;

在这里插入图片描述

不开启的话,只会有.a静态链接库文件
在这里插入图片描述

  • libx264、libx265、libfdk-aac都是第三方库
  • –enable-gpl:允许使用GPL(默认关闭)想要使用这些第三方库,则需要开启
  • –enable-version3:升级GPL到版本3(默认关闭)
  • –enable-nonfree:允许使用非免费的代码,产生的库和二进制程序将是不可再发行的(默认关闭)
  • –enable-pthreads:启用pthreads多线程(默认关闭)

2、编译

sudo make -j

最后一步遇到问题

/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/libfdk-aac.a(genericStds.o): relocation R_X86_64_PC32 against symbol `stdout@@GLIBC_2.2.5' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: 最后的链结失败: 错误的值
collect2: error: ld returned 1 exit status
ffbuild/library.mak:118: recipe for target 'libavcodec/libavcodec.so.60' failed
make: *** [libavcodec/libavcodec.so.60] Error 1

参考了很多资料,均未能解决,各家有各种错误
ffmpeg编译错误问题,.rodata’ can not be used when making a shared object; recompile with -fPIC
编译时出现: can not be used when making a shared object 和fPIC
make报错:relocation R_X86_64_PC32 against symbol `stderr@@GLIBC_2.2.5‘
ffmpeg使用fPIC静态库解决记录
编译ffmpeg出错 recompile with -fPIC
但是大概得出结论,可能是编译静态库动态库混用的问题。自己的编译已经通过了,就是链接时,其他库有问题。

尝试解决

方案1,重编fdk-aac

从报错打印来看,就是libfdk-aac.a这个有问题。首先看他路径对不对,我们的ffmpeg指定了安装到/usr/local/ffmpeg下,但是这个引用好像在/usr/lib/libfdk-aac.a,这个路径是从fdk-aac.pc中获取到的。可能是我们编fdk-aac时没有指定路径,装的地方不对;也可能是环境变量第一顺位是这里,就已经找到fdk-aac.pc文件;反正就它有问题
在这里插入图片描述
简单重编了fdk-aac之后,到ffmpeg还是报这个错
有人说是这个东西没有开启动态库编译,并且开了的话要开-fPIC。看了一下,编fdk-aac时./configure设置了–enable-shared,同时设置了CPPFLAGS=“-fPIC”,也一样到ffmpeg时报错

方案2,ffmpeg不编第三方库

就是只使用

sudo ./configure --prefix=/usr/local/ffmpeg --enable-shared --enable-nonfree --enable-pthreads --enable-pic

直接编过了。但是不行啊,得用啊。

方案3,ffmpeg不编动态库

就是不启用–enable-shared,这样也能编过,但是只有.a文件,肯定也不行
此时基本确认是动态库问题

方案4,在路径下发现没有fdk-aac的so文件

具体原因大概是因为编ffmpeg的动态库文件需要依赖fdk-aac的动态库文件,我们装的fdk-aac在/usr/local/ffmpeg下,由于安装时是从环境变量中获取fdk-aac的pc文件去取得库地址,我们装的fdk-aac在第二顺位环境变量下。
可能是ffmpeg写死路径的问题,也可能是系统自带fdk-aac且处于/usr/lib下,/usr/lib下的fdk-aac没有动态库文件。

  • 从我们自己装的路径下,复制一个so到ffmpeg需要的路径/usr/lib下,再安装,就正常了

3、可以安装了

sudo make install

装完可以在我们指定的路径下,看到可执行文件、库文件和头文件了


http://chatgpt.dhexx.cn/article/I7VqRiui.shtml

相关文章

idea jrebel recompile总是编译整个项目问题处理(如何快速编译)

问题:idea里面安装了jrebel,布置好热部署之后,每次recompile单个java文件或者前端文件时总是会编译整个项目,每次recompile非常的慢。这里的情况是gradle下的项目,下面是解决方式(亲测mac,windows有效)1:设…

BLESS的安装---一个问题recompile with -fPIC的解决

BLESS安装方法 首先新建一个目录 mkdir bless_c cd bless_c然后把源码克隆到本地 git clone https://github.com/thirtyeggs/bless.git进入目录,执行编译 cd bless make -j8编译报错 mpicxx kmc/kmc_api/kmc_file.o kmc/kmc_api/kmer_api.o kmc/kmc_api/mmer.o murmurhash…

gcc报错 can not be used when making a shared object; recompile with -fPIC

问题1:gcc报错 can not be used when making a shared object; recompile with -fPIC -fPIC 作用于编译阶段,告诉编译器产生与位置无关代码(Position-Independent Code), 则产生的代码中,没有绝对地址,全…

WRF——hdf编译报错 recompile with -fPIC

错误: 解决办法:重新编译zlib relocation R_X86_64_32 against .rodata can not be used when making a shared object; recompile with -fPIC 解决方案:以64位的方式重新编译zlib cd zlib CFLAGS"-fPIC" ./configure make …

mysql 存储过程 compile_SQLSERVER临时表导致存储过程重编译(recompile)的一些探讨_MySQL...

SQLSERVER为了确保返回正确的值,或者处于性能上的顾虑,有意不重用缓存在内存里的执行计划,而重新编译执行计划的这种行为,被称为重编译(recompile)。那么引发存储过程重编译的条件有哪一些呢?下面罗列了一些导致重编译…

mysql 存储过程 compile_SQL SERVER 临时表导致存储过程重编译(recompile)的一些探讨_MySQL...

SQLSERVER为了确保返回正确的值,或者处于性能上的顾虑,有意不重用缓存在内存里的执行计划,而重新编译执行计划的这种行为,被称为重编译(recompile)。那么引发存储过程重编译的条件有哪一些呢?下面罗列了一些导致重编译…

Qt recompile with -fPIC

Qt编译时提示: relocation R_X86_64_32 against ‘.rodata’ can not be used when making a PIE object: recompile with fPIC 于是百度, 找了很久找到一篇能够解决我这问题的帖子 在这里面的参考文档中提到,从Ubuntu16.10版本开始默认启用P…

IDEA安装JRebel实现热部署,自动reload和recompile

利用JRebel插件实现代码及时编译功能,帮助我们在开发过程中节省项目重启时间,提高开发效率。JRebel插件实现及时编译,帮助我们在开发过程中节省项目重启时间,提高开发效率。 一、安装 插件安装流程: 1.下载安装JRebel插…

WITH RECOMPILE和OPTION(RECOMPILE)区别

在考虑重编译T-SQL(或者存储过程)的时候,有两种方式可以实现强制重编译(前提是忽略导致重编译的其他因素的情况下,比如重建索引,更新统计信息等等),  一是基于WITH RECOMPILE的存储过程级别重编译,另外一种是基于OPTION(RECOMPILE)的语句级重编译。  之前了解的比较…

内网穿透群晖NAS:实现无公网IP远程访问群晖 2/2

系列文章 内网穿透群晖NAS:免费安装cpolar群晖套件 1/2内网穿透群晖NAS:实现无公网IP远程访问群晖 2/2 上一篇 内网穿透群晖NAS:免费安装cpolar群晖套件 1/2 在上一篇介绍里,我们在群晖系统中成功安装了图形化界面的cpolar&#…

群晖设置公网ipv6方式域名解析访问

1.环境说明 上网:电信光猫tplink路由器(电信送的) 群晖:DSM 7.1.1-42962 Update 2 域名服务商:腾讯云 2.光猫设置 2.1 获取光猫超级用户密码 拨打电信10000号 2.2 修改光猫为桥接模式 略 3.路由器设置 3.1 路由器拨号上网…

群晖 阿里云ddns_群晖QuickConnect功能详解

先来了解下什么是QuickConnect,这是群晖的一个远程访问功能, 有这个功能直接注册一个QuickConnect账号就可以远程访问了, 这样就不需要你的宽带是否有公网ip, 也不需要配置路由器端口映射, 就可以轻松的实现外网访问。 上图的 http://quickconnect.to/vip 外网在电脑浏览器…

IPv6/IPv4 + aliddns 实现黑群晖外网控制和访问

前言 一直想弄台黑群NAS,但因为穷!一直没入,一直用的是玩客云,但玩客云满足不了我的需求,但正好搭上蜗牛星际的车! J19004G内存16G固态4盘位千兆网口才380元,性价比是真的高,再买两…

群晖NAS配置DNSPodDDNS实现外网访问(仅适用于阿里云域名)

创作立场声明:本文只是单纯的经验分享,没有任何恰饭行为!转载前请联系作者授权,并附上此文章链接! 前言 本文将详解如何使用群晖NAS自带的DDNS功能来实现腾讯云DNSPod动态域名解析。 设置你的域名DNS服务器到DNSPod 登录阿里云控制台&…

【宇麦科技】腾xun云登场,群晖NAS自定义域名教程来啦~

如今网盘的使用成本越来越高,更多的人选择搭建自己的家庭 NAS 服务器。 NAS 可以用来做大容量存储、文件备份、文件下载、相册同步,甚至可以搭建网站、搭建自己的笔记以及邮件服务。 NAS 一般都安装在家里,那么出门在外应该如何远程访问家里的…

群晖NAS的公网、NAT、DDNS、证书等配置一

一、群辉NAS应用场景 你是否有过这样的需求? 1. 远程办公 日常的工作资料太多太杂乱,换个电脑根本没法工作?团队间资料共享太麻烦?Drive套件这个远程办公神器都能解决。 我的文件相当于远程的“我的文档”,“团队文件”是可以与团队成员共享。在PC端和手机端都可以方便…

群晖NAS教程(二十一)、利用Docker安装DDNS动态域名解析,自动更新域名解析到公网IP(支持阿里云、腾讯云dnspod、Cloudflare、华为云)

群晖NAS教程(二十一)、利用Docker安装DDNS动态域名解析,自动更新域名解析到公网IP(支持阿里云、腾讯云dnspod、Cloudflare、华为云) 为了更好的浏览体验,欢迎光顾勤奋的凯尔森同学个人博客http://www.huerpu.cc:7000 一、下载镜像与配置启动参数 在群…

群晖外网访问终极解决方法:IPV6+阿里云ddns+ddnsto

写在前面的话 受够了群晖的quickconnet的小水管了,急需一个新的解决方法,这是后发现移动没有公网IP,只有ipv6(公网的),时候有小伙伴要问,要是没有ipv6就没办法访问群晖了吗? 不&…

群辉默认DDNS功能解析阿里云-自定义服务商

前言 前不久买了个群辉NAS发现群辉DDNS不能解析阿里云,后来找了很多教程都是部署Docker或使用其他平台转发一下,然而这些平台还要注册,我就在想我自己可不可以实现不需要注册就可以使用的DDNS,毕竟咱也是干这个的。 然后我就去上…

一文搞懂“如何通过群晖+DNSPod DDNS搭建私有云服务?”

DNSPod春节特惠3折起 买解析就送CDN,最高60TB CDN让你带回家 👉🏻购买入口 近期很多DIY私有云玩家私聊D妹“我想在外网访问家庭网络,怎么搞?”,“如何将动态IP映射到一个固定的域名解析服务上?”…