各位大佬好哈:
react-native url :https://github.com/facebook/react-native/archive/refs/tags/v0.66.0-rc.3.zip
我需要修改react-native中部分java代码,然后对它的ReactAndroid模块进行重新打包一个aar给android开发人员使用。aar中至少应该包含"armeabi-v7a", "arm64-v8a"这俩个架构的so后缀的动态库的,手机用这俩。 但是在编译过程中出现了一个错误,错误信息如下:
/home/masj/.Library/android-sdk/ndk/21.4.7075529/toolchains/llvm/prebuilt/linux-x86_64/bin/../lib/gcc/aarch64-linux-android/4.9.x/../../../../aarch64-linux-android/bin/ld: skipping incompatible /usr/lib/libatomic.so when searching for -latomic
/home/masj/.Library/android-sdk/ndk/21.4.7075529/toolchains/llvm/prebuilt/linux-x86_64/bin/../lib/gcc/aarch64-linux-android/4.9.x/../../../../aarch64-linux-android/bin/ld: skipping incompatible /usr/lib/libc.so when searching for -lc
/home/masj/.Library/android-sdk/ndk/21.4.7075529/toolchains/llvm/prebuilt/linux-x86_64/bin/../lib/gcc/aarch64-linux-android/4.9.x/../../../../aarch64-linux-android/bin/ld: skipping incompatible /usr/lib/libc.a when searching for -lc
/home/masj/.Library/android-sdk/ndk/21.4.7075529/toolchains/llvm/prebuilt/linux-x86_64/bin/../lib/gcc/aarch64-linux-android/4.9.x/../../../../aarch64-linux-android/bin/ld: skipping incompatible /usr/lib/libm.so when searching for -lm
/home/masj/.Library/android-sdk/ndk/21.4.7075529/toolchains/llvm/prebuilt/linux-x86_64/bin/../lib/gcc/aarch64-linux-android/4.9.x/../../../../aarch64-linux-android/bin/ld: skipping incompatible /usr/lib/libm.a when searching for -lm
/home/masj/.Library/android-sdk/ndk/21.4.7075529/toolchains/llvm/prebuilt/linux-x86_64/bin/../lib/gcc/aarch64-linux-android/4.9.x/../../../../aarch64-linux-android/bin/ld: skipping incompatible /usr/lib/libm.so when searching for -lm
/home/masj/.Library/android-sdk/ndk/21.4.7075529/toolchains/llvm/prebuilt/linux-x86_64/bin/../lib/gcc/aarch64-linux-android/4.9.x/../../../../aarch64-linux-android/bin/ld: skipping incompatible /usr/lib/libm.a when searching for -lm
/home/masj/.Library/android-sdk/ndk/21.4.7075529/toolchains/llvm/prebuilt/linux-x86_64/bin/../lib/gcc/aarch64-linux-android/4.9.x/../../../../aarch64-linux-android/bin/ld: skipping incompatible /usr/lib/libc.so when searching for -lc
/home/masj/.Library/android-sdk/ndk/21.4.7075529/toolchains/llvm/prebuilt/linux-x86_64/bin/../lib/gcc/aarch64-linux-android/4.9.x/../../../../aarch64-linux-android/bin/ld: skipping incompatible /usr/lib/libc.a when searching for -lc
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [/home/masj/.Library/android-sdk/ndk/21.4.7075529/build/core/build-binary.mk:725: /home/masj/Projects/android/react-native-0.66.3/react-native-0.66.0-rc.3/ReactAndroid/build/tmp/buildReactNdkLib/local/arm64-v8a/libreact_debug.so] Error 1
make: *** Waiting for unfinished jobs....
我只大概知道这种是工具链,库啥的架构不匹配导致的问题,然后用file命令看了几个文件:
$ file /home/masj/.Library/android-sdk/ndk/21.4.7075529/toolchains/llvm/prebuilt/linux-x86_64/bin/../lib/gcc/aarch64-linux-android/4.9.x/../../../../aarch64-linux-android/bin/ld
/home/masj/.Library/android-sdk/ndk/21.4.7075529/toolchains/llvm/prebuilt/linux-x86_64/bin/../lib/gcc/aarch64-linux-android/4.9.x/../../../../aarch64-linux-android/bin/ld: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.24, stripped
$ file /usr/lib/libatomic.so
/usr/lib/libatomic.so: symbolic link to libatomic.so.1.2.0
$ file /usr/lib/libatomic.so.1.2.0
/usr/lib/libatomic.so.1.2.0: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, BuildID[sha1]=c6e8412dcbd0c334d80862ecbc9636c327339fa0, with debug_info, not stripped
$ file /usr/lib/libc.so
/usr/lib/libc.so: ASCII text
$ cat /usr/lib/libc.so
/* GNU ld script
Use the shared library, but some functions are only in
the static library, so try that secondarily. */
OUTPUT_FORMAT(elf64-x86-64)
GROUP ( /usr/lib/libc.so.6 /usr/lib/libc_nonshared.a AS_NEEDED ( /usr/lib/ld-linux-x86-64.so.2 ) )
但是这看着也都是64的好像也没啥问题,不懂怎么处理了,而且这个问题我又在fedora和debian的发行版上测试了一下,同样的工程编译是没有问题的,可以打包,确定只会在arch中出现这个错误,有没有彦祖知道原因或者有什么修改建议啥的啊