【BUG】unresolvable R_ARM_THM_CALL relocation against symbol `strlen'

本文介绍了解决Android NDK r8b版本在编译过程中出现的未解析符号错误的方法,通过替换链接器ld为ld.gold,解决了so库无法在真机上运行的问题。


编译的时候遇到这个问题,,生成的so有问题,在真机上无法运行。


解决办法:

报错!

SharedLibrary : libmupdf.so
/usr/local/lib/android-ndk-r8b/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.6.x-google/../../../../arm-linux-androideabi/bin/ld: ./obj/local/armeabi/libmupdfcore.a(pdf_fontfile.o)(.text.pdf_lookup_builtin_font+0x18): unresolvable R_ARM_THM_CALL relocation against symbol `strcmp'
/usr/local/lib/android-ndk-r8b/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.6.x-google/../../../../arm-linux-androideabi/bin/ld: final link failed: Nonrepresentable section on output
collect2: ld returned 1 exit status
make: *** [obj/local/armeabi/libmupdf.so] Error 1


google一番得知是NDK的版本问题。

解决方法:

把android-ndk-r8b/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/arm-linux-androideabi/bin/目录下的ld文件存知别的地方(剪切走),然后创建一个软链接:

sudo ln -s ld.gold ld

(把原来的ld文件删掉,然后再这个目录运行这个命令)
/home/ub/word/Toolchain/arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-linux-musleabihf/bin/arm-none-linux-musleabihf-g++ -shared -o /home/ub/word/OVD/sdk//out/general/arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-linux-musleabihf/lib/libovdsdk.so -Wl,--whole-archive /home/ub/word/OVD/sdk//out/general/arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-linux-musleabihf/lib/libopenapi.a -Wl,--no-whole-archive -Wl,--start-group /home/ub/word/OVD/sdk//out/general/arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-linux-musleabihf/lib/libcard_playback.a /home/ub/word/OVD/sdk//out/general/arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-linux-musleabihf/lib/libcommon.a /home/ub/word/OVD/sdk//out/general/arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-linux-musleabihf/lib/libconfigure.a /home/ub/word/OVD/sdk//out/general/arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-linux-musleabihf/lib/libcrypt.a /home/ub/word/OVD/sdk//out/general/arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-linux-musleabihf/lib/libcseg.a /home/ub/word/OVD/sdk//out/general/arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-linux-musleabihf/lib/libdme.a /home/ub/word/OVD/sdk//out/general/arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-linux-musleabihf/lib/libhttpclient.a /home/ub/word/OVD/sdk//out/general/arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-linux-musleabihf/lib/libnetconfig.a /home/ub/word/OVD/sdk//out/general/arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-linux-musleabihf/lib/libalarm.a /home/ub/word/OVD/sdk//out/general/arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-linux-musleabihf/lib/libservice_schedule.a /home/ub/word/OVD/sdk//out/general/arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-linux-musleabihf/lib/libsoftprobe.a /home/ub/word/OVD/sdk//out/general/arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-linux-musleabihf/lib/libstream.a /home/ub/word/OVD/sdk//out/general/arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-linux-musleabihf/lib/libutils.a /home/ub/word/OVD/sdk//out/general/arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-linux-musleabihf/lib/libminizip.a /home/ub/word/OVD/sdk//lib/arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-linux-musleabihf/libwebsockets.a /home/ub/word/OVD/sdk//lib/arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-linux-musleabihf/libiperf.a /home/ub/word/OVD/sdk//lib/arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-linux-musleabihf/libsrt.a /home/ub/word/OVD/sdk//lib/arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-linux-musleabihf/libz.a /home/ub/word/OVD/sdk//out/general/arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-linux-musleabihf/lib/libjson_schema.a /home/ub/word/OVD/sdk//lib/arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-linux-musleabihf/libnlohmann_json_schema_validator.a /home/ub/word/OVD/sdk//out/general/arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-linux-musleabihf/lib/libaliyun-log-c-sdk.a -Wl,--end-group -lm -pthread -Wl,--version-script=version-script.txt /home/ub/word/Toolchain/arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-linux-musleabihf/bin/../lib/gcc/arm-none-linux-musleabihf/11.3.0/../../../../arm-none-linux-musleabihf/bin/ld: /home/ub/word/OVD/sdk//lib/arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-linux-musleabihf/libnlohmann_json_schema_validator.a(json-uri.cpp.o): relocation R_ARM_THM_MOVW_ABS_NC against `a local symbol' can not be used when making a shared object; recompile with -fPIC /home/ub/word/Toolchain/arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-linux-musleabihf/bin/../lib/gcc/arm-none-linux-musleabihf/11.3.0/../../../../arm-none-linux-musleabihf/bin/ld: /home/ub/word/OVD/sdk//lib/arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-linux-musleabihf/libnlohmann_json_schema_validator.a(json-validator.cpp.o): relocation R_ARM_THM_MOVW_ABS_NC against `a local symbol' can not be used when making a shared object; recompile with -fPIC /home/ub/word/Toolchain/arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-linux-musleabihf/bin/../lib/gcc/arm-none-linux-musleabihf/11.3.0/../../../../arm-none-linux-musleabihf/bin/ld: /home/ub/word/OVD/sdk//lib/arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-linux-musleabihf/libnlohmann_json_schema_validator.a(json-patch.cpp.o): relocation R_ARM_THM_MOVW_ABS_NC against `a local symbol' can not be used when making a shared object; recompile with -fPIC /home/ub/word/Toolchain/arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-linux-musleabihf/bin/../lib/gcc/arm-none-linux-musleabihf/11.3.0/../../../../arm-none-linux-musleabihf/bin/ld: /home/ub/word/OVD/sdk//lib/arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-linux-musleabihf/libnlohmann_json_schema_validator.a(string-format-check.cpp.o): relocation R_ARM_THM_MOVW_ABS_NC against `a local symbol' can not be used when making a shared object; recompile with -fPIC /home/ub/word/Toolchain/arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-linux-musleabihf/bin/../lib/gcc/arm-none-linux-musleabihf/11.3.0/../../../../arm-none-linux-musleabihf/bin/ld: /home/ub/word/OVD/sdk//lib/arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-linux-musleabihf/libnlohmann_json_schema_validator.a(smtp-address-validator.cpp.o): relocation R_ARM_THM_MOVW_ABS_NC against `a local symbol' can not be used when making a shared object; recompile with -fPIC /home/ub/word/Toolchain/arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-linux-musleabihf/bin/../lib/gcc/arm-none-linux-musleabihf/11.3.0/../../../../arm-none-linux-musleabihf/bin/ld: /home/ub/word/OVD/sdk//lib/arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-linux-musleabihf/libnlohmann_json_schema_validator.a(json-uri.cpp.o)(.text+0x3c): unresolvable R_ARM_THM_CALL relocation against symbol `_ZNSaIcED1Ev@@GLIBCXX_3.4' collect2: error: ld returned 1 exit status make: *** [Makefile:173: ovdsdk_shared] Error 1
10-31
luyanxi@ubuntu:~/Desktop/nvmp/nt98566/nvmp/build_dir/target-arm-ca9-linux-uclibcgnueabihf-cx45ziv1/main/libraries/ams/aad$ /home/luyanxi/Desktop/nvmp/nt98566/nvmp/staging_dir/toolchain-arm-ca9-linux-uclibcgnueabihf-cx45ziv1/bin/arm-ca9-linux-uclibcgnueabihf-gcc -shared -o aad.so *.o -fPIC /home/luyanxi/Desktop/nvmp/nt98566/sdk/soc/nvt9856x/uclibc-toolchain-1.0.32/arm-ca9-linux-uclibcgnueabihf-8.4.01/bin/../lib/gcc/arm-ca9-linux-uclibcgnueabihf/8.4.0/../../../../arm-ca9-linux-uclibcgnueabihf/bin/ld: aad.o: relocation R_ARM_MOVW_ABS_NC against `a local symbol' can not be used when making a shared object; recompile with -fPIC /home/luyanxi/Desktop/nvmp/nt98566/sdk/soc/nvt9856x/uclibc-toolchain-1.0.32/arm-ca9-linux-uclibcgnueabihf-8.4.01/bin/../lib/gcc/arm-ca9-linux-uclibcgnueabihf/8.4.0/../../../../arm-ca9-linux-uclibcgnueabihf/bin/ld: aad_sys_config.o: relocation R_ARM_MOVW_ABS_NC against `a local symbol' can not be used when making a shared object; recompile with -fPIC /home/luyanxi/Desktop/nvmp/nt98566/sdk/soc/nvt9856x/uclibc-toolchain-1.0.32/arm-ca9-linux-uclibcgnueabihf-8.4.01/bin/../lib/gcc/arm-ca9-linux-uclibcgnueabihf/8.4.0/../../../../arm-ca9-linux-uclibcgnueabihf/bin/ld: aad.o(.text.aad_reset+0x18): unresolvable R_ARM_CALL relocation against symbol `memset' /home/luyanxi/Desktop/nvmp/nt98566/sdk/soc/nvt9856x/uclibc-toolchain-1.0.32/arm-ca9-linux-uclibcgnueabihf-8.4.01/bin/../lib/gcc/arm-ca9-linux-uclibcgnueabihf/8.4.0/../../../../arm-ca9-linux-uclibcgnueabihf/bin/ld: final link failed: nonrepresentable section on output collect2: error: ld returned 1 exit status
10-30
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值