FFmpeg、OpenSSL编译:无法解决 R_AARCH64_ADR_PREL_PG_HI21 重定向于符号 “sinh@@GLIBC_2.17” 有冲突

ffmpeg:

/opt/hisi-linux/x86-arm/aarch64-himix100-linux/host_bin/../lib/gcc/aarch64-linux-gnu/6.3.0/../../../../aarch64-linux-gnu/bin/ld: libavutil/eval.o: relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `sinh@@GLIBC_2.17' which may bind externally can not be used when making a shared object; recompile with -fPIC
/opt/hisi-linux/x86-arm/aarch64-himix100-linux/host_bin/../lib/gcc/aarch64-linux-gnu/6.3.0/../../../../aarch64-linux-gnu/bin/ld: libavutil/eval.o(.text+0xf10): 无法解决 R_AARCH64_ADR_PREL_PG_HI21 重定向于符号 “sinh@@GLIBC_2.17” 有冲突
/opt/hisi-linux/x86-arm/aarch64-himix100-linux/host_bin/../lib/gcc/aarch64-linux-gnu/6.3.0/../../../../aarch64-linux-gnu/bin/ld: 最后的链结失败: 错误的值
collect2: error: ld returned 1 exit status
make: *** [libavutil/libavutil.so.56] 错误 1

解决方法:

在编译ffmpeg配置configure是添加:--extra-cflags=-fPIC,即可解决。

OpenSSL:

make[4]: 正在进入目录 `/home/xy/work/test/400_SSL'
/opt/hisi-linux/x86-arm/aarch64-himix100-linux/host_bin/../lib/gcc/aarch64-linux-gnu/6.3.0/../../../../aarch64-linux-gnu/bin/ld: libcrypto.a(cryptlib.o): relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol `stderr@@GLIBC_2.17' which may bind externally can not be used when making a shared object; recompile with -fPIC
/opt/hisi-linux/x86-arm/aarch64-himix100-linux/host_bin/../lib/gcc/aarch64-linux-gnu/6.3.0/../../../../aarch64-linux-gnu/bin/ld: libcrypto.a(cryptlib.o)(.text+0x774): 无法解决 R_AARCH64_ADR_PREL_PG_HI21 重定向于符号 “stderr@@GLIBC_2.17” 有冲突
/opt/hisi-linux/x86-arm/aarch64-himix100-linux/host_bin/../lib/gcc/aarch64-linux-gnu/6.3.0/../../../../aarch64-linux-gnu/bin/ld: 最后的链结失败: 错误的值
collect2: error: ld returned 1 exit status
make[4]: *** [link_a.gnu] 错误 1
make[4]:正在离开目录 `/home/xy/work/test/400_SSL'
make[3]: *** [do_linux-shared] 错误 2
make[3]:正在离开目录 `/home/xy/work/test/400_SSL'
make[2]: *** [libcrypto.so.1.0.0] 错误 2
make[2]:正在离开目录 `/home/xy/work/test/400_SSL'
make[1]: *** [shared] 错误 2
make[1]:正在离开目录 `/home/xy/work/test/400_SSL/crypto'
make: *** [build_crypto] 错误 1

解决方法:

vi Makefile,在CFLAG 后面追加 -fPIC,如:

试了一下,一般这个aarch64-himix100-linux- 编译工具编译的动态库编译的.so文件,中间的 *.o 都要用 -fPIC 生成,才会不报错。

CMake是一个跨平台的开源构建工具,可用于自动化管理项目的编译过程。FFmpeg是一个开源的音视频处理库,可以用来处理多种格式的音视频文件。而最后的下载的文件opencv_ffmpeg_64.dll是OpenCV库所需的FFmpeg动态链接库。 当我们在使用CMake构建一个项目时,可能会用到FFmpeg库来进行音视频处理。其中,OpenCV是一个广泛使用的计算机视觉库,它也能够使用FFmpeg进行音视频的编解码与处理。而opencv_ffmpeg_64.dll是OpenCV库所需的FFmpeg依赖库,这个库在运行OpenCV相关功能时需要被加载。 如果在使用CMake构建一个依赖于OpenCV和FFmpeg的项目时,若缺少opencv_ffmpeg_64.dll文件,可以通过下载获得该文件。可以通过在网上搜索opencv_ffmpeg_64.dll文件的下载链接,并将其下载到本地。下载完成后,将该文件放置在项目中指定的位置,一般来说是与其他的动态链接库(.dll文件)放在一起的。然后重新进行CMake构建,以确保项目能够正确加载该库文件。 需要注意的是,下载的文件必须与你的系统和项目的架构相匹配。例如,如果你的系统是64位的,那么你需要下载64位的opencv_ffmpeg_64.dll文件,而不是32位的。如果下载的文件与你的系统不匹配,可能会导致项目构建失败或运行时错误。 总结来说,下载opencv_ffmpeg_64.dll文件是为了满足OpenCV库在进行音视频处理时所依赖的FFmpeg库的加载需求。在使用CMake构建项目时,下载并正确放置该文件,可以确保项目能够正确运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值