在用AndroidStudio开发APP时,因重新拉取git仓库代码,导致以下错误:

[164/164] Linking CXX shared library ..\..\..\..\build\intermediates\cmake\debug\obj\arm64-v8a\libailiving.so
FAILED: cmd.exe /C "cd . && C:\Users\LENOVO\AppData\Local\Android\Sdk\ndk\22.1.7171670\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe  --target=aarch64-none-linux-android24 --gcc-toolchain=C:/Users/LENOVO/AppData/Local/Android/Sdk/ndk/22.1.7171670/toolchains/llvm/prebuilt/windows-x86_64 --sysroot=C:/Users/LENOVO/AppData/Local/Android/Sdk/ndk/22.1.7171670/toolchains/llvm/prebuilt/windows-x86_64/sysroot -fPIC -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security  -O3 -fexceptions -fsigned-char -frtti -std=c++14 -Wformat -fuse-ld=lld -std=gnu++11 -O2 -DNDEBUG  -s -O3 -Wall  -Wl,--exclude-libs,libgcc.a -Wl,--exclude-libs,libgcc_real.a -Wl,--exclude-libs,libatomic.a -static-libstdc++ -Wl,--build-id=sha1 -Wl,--no-rosegment -Wl,--fatal-warnings -Wl,--no-undefined -Qunused-arguments -shared -Wl,   .............. ../../../../src/main/jniLibs/arm64-v8a/libvulkan.so -llog -latomic -lm && cd ."
ld.lld: error: found local symbol '_edata' in global part of symbol table in file ../../../../src/main/jniLibs/arm64-v8a/libopencv_java3.so
ld.lld: error: found local symbol '__end__' in global part of symbol table in file ../../../../src/main/jniLibs/arm64-v8a/libopencv_java3.so
ld.lld: error: found local symbol '__bss_end__' in global part of symbol table in file ../../../../src/main/jniLibs/arm64-v8a/libopencv_java3.so
ld.lld: error: found local symbol '_bss_end__' in global part of symbol table in file ../../../../src/main/jniLibs/arm64-v8a/libopencv_java3.so
ld.lld: error: found local symbol '__bss_start__' in global part of symbol table in file ../../../../src/main/jniLibs/arm64-v8a/libopencv_java3.so
ld.lld: error: found local symbol '_end' in global part of symbol table in file ../../../../src/main/jniLibs/arm64-v8a/libopencv_java3.so
ld.lld: error: found local symbol '__bss_start' in global part of symbol table in file ../../../../src/main/jniLibs/arm64-v8a/libopencv_java3.so
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.

> Task :app:externalNativeBuildDebug FAILED
ld.lld: error: found local symbol '__bss_start' in global part of symbol table in file ../../../../src/main/jniLibs/arm64-v8a/libopencv_java3.so

上面错误明显是链接时  __bss_start 等重复了。网上有说在CMake加  -fuse-ld=gold 或者 -fuse-ld=lld 编译项的。(参考 "local symbol '__bss_start' in global part of symbol table" only in Android NDK aarch64 build - Stack Overflow

其实都没有用,归根结底还是NDK版本不同导致的,因为libopencv_java3.so库文件是在官网下载的,不知道但是是用什么方式编译生成的。想想之前的代码一点问题都没有,为什么重新拉取代码后就出问题呢?应该还是编译环境不同导致的。

我这里用的是NDK版本是22.1.7171670,找回之前的项目目录查看NDK版本发现是21.1.6352462。立刻更换NDK版本,就能编译通过了。

看来,用第三方编译好了的库文件还有版本匹配的风险。

遇到 ld.lld: error: found local symbol ‘__bss_start‘ in global part of symbol table in file 错误 在用AndroidStudio开发APP时,因重新拉取git仓库代码,导致以下错误:[164/164] Linking CXX shared library ..\..\..\..\build\intermediates\cmake\debug\obj\arm64-v8a\libailiving.soFAILED: cmd.exe /C "cd . && C:\Users\LENOVO\AppData\Local\Android\Sdk\ndk\22.1.7171670\toolcha found local symbol '__ bss _s tar t' in global part of symbol table found local symbol '_edata' in global part of symbol table found local symbol '_end' in global par... 1、取消 local .properties 中的 ndk.dir : sdk.dir=/Users/tmk/Library/ Android /sdk #ndk.dir=/Users/tmk/Library/ Android /sdk/ndk-bundle 2、确保已下载 ndk 和 cmake: Gradle sync failed: com. android .tools.idea.gradle.project.sync.idea.issues.SdkPlatformNotFoundException: Module: ‘bledatacontrol’ platform ‘ android -24’ not found. (12 s 199 ms) sdk版本不对应 下载对应的sdk java.lang.ClassNotFoundExce
连接某个动态库后, ld d应用程序,发现这个动态库not found。 1. 检查make file 脚本,-L指定了动态库的位置,不然也不会编译通过。 2. 通过设置 LD _LIBRARY_PATH, ld config也没有用。 最后才发现,编译出来的动态库名字本身叫libava tar .so.打包给应用程序的时候,被应用程序重命名为libava tar _sdk.so 编译连接应用程序完成,
Android 编译 错误 undefined symbol 分析与解决方案 最近在 Android Q上写一个bin文件时 遇到 编译报错的问题,具体报错如下: ld . lld : error : undefined symbol : android ::RefBase::decStrong(void const*) const >>> referenced by StrongPointer.h:182 (system/core/libutils/include/utilsPointer.h:182)
1. 调用动态库的时候有几个问题会经常碰到,有时,明明已经将库的头文件所在目录 通过 “-I” include进来了,库所在文件通过 “-L”参数引导,并指定了“-l”的库名,但通过 ld d命令察看时,就是死活找不到你指定链接的so文件,这时你要作的就是通过修改 LD _LIBRARY_PATH或者/etc/ ld .so.conf文件来指定动态库的目录。通常这样做就可以解决库无法链接的问题了。 遇到 ld.lld: error: found local symbol ‘__bss_start‘ in global part of symbol table in file 错误 zJianFlys: 这个问题搞死我了 遇到 ld.lld: error: found local symbol ‘__bss_start‘ in global part of symbol table in file 错误 某个早晨突然醒来的特困生: 请问是设置什么呢……我现在也遇到这个问题又不想降版本。。 遇到 ld.lld: error: found local symbol ‘__bss_start‘ in global part of symbol table in file 错误 byshun: 在加载完成前就要设置,纯小白,亲测可行(三天以来唯一成功的方法) 编译Android11是遇到kernel出现fatal error: ‘linux/compiler_types.h‘ file not found 技术小白白~: 总结的挺不错的 表情包 表情包 ,您也研究这块啊,平时可以多多交流,大佬可以给个WX吗? Android: groovy.lang.MissingPropertyException: Could not set unknown property ‘outputFileName‘ Jorelanbo: 你好,上面截图的官网地址能发一下不