Android Studio 导入libdobby.a静态库,编译时,链接阶段报错
ndl1302732 opened this issue · comments
在github上下载最新的android版本静态库,在Android Studio项目中使用。
使用的ndk版本:android-ndk-r25b
ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol 'regions'; recompile with -fPIC
defined in D:/WorkSpace/XposedNative/app/src/main/cpp/jniLibs/arm64-v8a/libdobby.a(ProcessRuntimeUtility.cc.o)
referenced by ProcessRuntimeUtility.cc
ProcessRuntimeUtility.cc.o:(ProcessRuntimeUtility::GetProcessMemoryLayout()) in archive D:/WorkSpace/XposedNative/app/src/main/cpp/jniLibs/arm64-v8a/libdobby.a
ld: error: relocation R_AARCH64_ADD_ABS_LO12_NC cannot be used against symbol 'regions'; recompile with -fPIC
defined in D:/WorkSpace/XposedNative/app/src/main/cpp/jniLibs/arm64-v8a/libdobby.a(ProcessRuntimeUtility.cc.o)
referenced by ProcessRuntimeUtility.cc
ProcessRuntimeUtility.cc.o:(ProcessRuntimeUtility::GetProcessMemoryLayout()) in archive D:/WorkSpace/XposedNative/app/src/main/cpp/jniLibs/arm64-v8a/libdobby.a
ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol 'regions'; recompile with -fPIC
defined in D:/WorkSpace/XposedNative/app/src/main/cpp/jniLibs/arm64-v8a/libdobby.a(ProcessRuntimeUtility.cc.o)
referenced by ProcessRuntimeUtility.cc
ProcessRuntimeUtility.cc.o:(ProcessRuntimeUtility::GetProcessMemoryLayout()) in archive D:/WorkSpace/XposedNative/app/src/main/cpp/jniLibs/arm64-v8a/libdobby.a
ld: error: relocation R_AARCH64_ADD_ABS_LO12_NC cannot be used against symbol 'regions'; recompile with -fPIC
defined in D:/WorkSpace/XposedNative/app/src/main/cpp/jniLibs/arm64-v8a/libdobby.a(ProcessRuntimeUtility.cc.o)
referenced by ProcessRuntimeUtility.cc
ProcessRuntimeUtility.cc.o:(ProcessRuntimeUtility::GetProcessMemoryLayout()) in archive D:/WorkSpace/XposedNative/app/src/main/cpp/jniLibs/arm64-v8a/libdobby.a
ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol 'regions'; recompile with -fPIC
defined in D:/WorkSpace/XposedNative/app/src/main/cpp/jniLibs/arm64-v8a/libdobby.a(ProcessRuntimeUtility.cc.o)
referenced by ProcessRuntimeUtility.cc
ProcessRuntimeUtility.cc.o:(ProcessRuntimeUtility::GetProcessMemoryLayout()) in archive D:/WorkSpace/XposedNative/app/src/main/cpp/jniLibs/arm64-v8a/libdobby.a
ld: error: relocation R_AARCH64_ADD_ABS_LO12_NC cannot be used against symbol 'regions'; recompile with -fPIC
defined in D:/WorkSpace/XposedNative/app/src/main/cpp/jniLibs/arm64-v8a/libdobby.a(ProcessRuntimeUtility.cc.o)
referenced by ProcessRuntimeUtility.cc
ProcessRuntimeUtility.cc.o:(ProcessRuntimeUtility::GetProcessMemoryLayout()) in archive D:/WorkSpace/XposedNative/app/src/main/cpp/jniLibs/arm64-v8a/libdobby.a
ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol 'regions'; recompile with -fPIC
defined in D:/WorkSpace/XposedNative/app/src/main/cpp/jniLibs/arm64-v8a/libdobby.a(ProcessRuntimeUtility.cc.o)
referenced by ProcessRuntimeUtility.cc
ProcessRuntimeUtility.cc.o:(ProcessRuntimeUtility::GetProcessMemoryLayout()) in archive D:/WorkSpace/XposedNative/app/src/main/cpp/jniLibs/arm64-v8a/libdobby.a
ld: error: relocation R_AARCH64_LDST64_ABS_LO12_NC cannot be used against symbol 'regions'; recompile with -fPIC
defined in D:/WorkSpace/XposedNative/app/src/main/cpp/jniLibs/arm64-v8a/libdobby.a(ProcessRuntimeUtility.cc.o)
referenced by ProcessRuntimeUtility.cc
ProcessRuntimeUtility.cc.o:(ProcessRuntimeUtility::GetProcessMemoryLayout()) in archive D:/WorkSpace/XposedNative/app/src/main/cpp/jniLibs/arm64-v8a/libdobby.a
ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol 'regions'; recompile with -fPIC
defined in D:/WorkSpace/XposedNative/app/src/main/cpp/jniLibs/arm64-v8a/libdobby.a(ProcessRuntimeUtility.cc.o)
referenced by ProcessRuntimeUtility.cc
ProcessRuntimeUtility.cc.o:(ProcessRuntimeUtility::GetProcessMemoryLayout()) in archive D:/WorkSpace/XposedNative/app/src/main/cpp/jniLibs/arm64-v8a/libdobby.a
ld: error: relocation R_AARCH64_LDST64_ABS_LO12_NC cannot be used against symbol 'regions'; recompile with -fPIC
defined in D:/WorkSpace/XposedNative/app/src/main/cpp/jniLibs/arm64-v8a/libdobby.a(ProcessRuntimeUtility.cc.o)
referenced by ProcessRuntimeUtility.cc
ProcessRuntimeUtility.cc.o:(ProcessRuntimeUtility::GetProcessMemoryLayout()) in archive D:/WorkSpace/XposedNative/app/src/main/cpp/jniLibs/arm64-v8a/libdobby.a
ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol 'regions'; recompile with -fPIC
defined in D:/WorkSpace/XposedNative/app/src/main/cpp/jniLibs/arm64-v8a/libdobby.a(ProcessRuntimeUtility.cc.o)
referenced by ProcessRuntimeUtility.cc
ProcessRuntimeUtility.cc.o:(ProcessRuntimeUtility::GetProcessMemoryLayout()) in archive D:/WorkSpace/XposedNative/app/src/main/cpp/jniLibs/arm64-v8a/libdobby.a
ld: error: relocation R_AARCH64_ADD_ABS_LO12_NC cannot be used against symbol 'regions'; recompile with -fPIC
defined in D:/WorkSpace/XposedNative/app/src/main/cpp/jniLibs/arm64-v8a/libdobby.a(ProcessRuntimeUtility.cc.o)
referenced by ProcessRuntimeUtility.cc
ProcessRuntimeUtility.cc.o:(ProcessRuntimeUtility::GetProcessMemoryLayout()) in archive D:/WorkSpace/XposedNative/app/src/main/cpp/jniLibs/arm64-v8a/libdobby.a
ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol 'regions'; recompile with -fPIC
defined in D:/WorkSpace/XposedNative/app/src/main/cpp/jniLibs/arm64-v8a/libdobby.a(ProcessRuntimeUtility.cc.o)
referenced by ProcessRuntimeUtility.cc
ProcessRuntimeUtility.cc.o:(ProcessRuntimeUtility::GetProcessMemoryLayout()) in archive D:/WorkSpace/XposedNative/app/src/main/cpp/jniLibs/arm64-v8a/libdobby.a
ld: error: relocation R_AARCH64_ADD_ABS_LO12_NC cannot be used against symbol 'regions'; recompile with -fPIC
defined in D:/WorkSpace/XposedNative/app/src/main/cpp/jniLibs/arm64-v8a/libdobby.a(ProcessRuntimeUtility.cc.o)
referenced by ProcessRuntimeUtility.cc
ProcessRuntimeUtility.cc.o:(ProcessRuntimeUtility::GetProcessMemoryLayout()) in archive D:/WorkSpace/XposedNative/app/src/main/cpp/jniLibs/arm64-v8a/libdobby.a
ld: error: relocation R_AARCH64_ADR_PREL_PG_HI21 cannot be used against symbol 'regions'; recompile with -fPIC
defined in D:/WorkSpace/XposedNative/app/src/main/cpp/jniLibs/arm64-v8a/libdobby.a(ProcessRuntimeUtility.cc.o)
referenced by ProcessRuntimeUtility.cc
ProcessRuntimeUtility.cc.o:(_GLOBAL__sub_I_ProcessRuntimeUtility.cc) in archive D:/WorkSpace/XposedNative/app/src/main/cpp/jniLibs/arm64-v8a/libdobby.a
ld: error: relocation R_AARCH64_ADD_ABS_LO12_NC cannot be used against symbol 'regions'; recompile with -fPIC
defined in D:/WorkSpace/XposedNative/app/src/main/cpp/jniLibs/arm64-v8a/libdobby.a(ProcessRuntimeUtility.cc.o)
referenced by ProcessRuntimeUtility.cc
ProcessRuntimeUtility.cc.o:(_GLOBAL__sub_I_ProcessRuntimeUtility.cc) in archive D:/WorkSpace/XposedNative/app/src/main/cpp/jniLibs/arm64-v8a/libdobby.a
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.
我也遇到了个问题,用的mk文件编译的,百度说加个LOCAL_CFLAGS := -fPIC就可以,但是我加了还是不行
已找到解决方法,Android.mk文件加上这一行就可以通过:LOCAL_LDFLAGS += -Wl,-Bsymbolic