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
FFmpeg、OpenSSL编译:无法解决 R_AARCH64_ADR_PREL_PG_HI21 重定向于符号 “sinh@@GLIBC_2.17” 有冲突_第1张图片

解决方法:

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

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

你可能感兴趣的:(FFmpeg)