android cmake 交叉编译 libc++_shared.so not found的问题

cmake 
-DCMAKE_TOOLCHAIN_FILE=D:\Android\Sdk\ndk\21.3.6528147\build\cmake\android.toolchain.cmake
-DANDROID_ABI="arm64-v8a" 
-DANDROID_PLATFORM=android-30 ..

cmake -DCMAKE_TOOLCHAIN_FILE=D:\Android\Sdk\ndk\21.3.6528147\build\cmake\android.toolchain.cmake -DANDROID_ABI="arm64-v8a" -DANDROID_PLATFORM=android-30 ..

cmake325 -DCMAKE_TOOLCHAIN_FILE=/root/android_tools/android-sdk-linux/ndk/23.1.7779620/build/cmake/android.toolchain.cmake -DANDROID_NDK=$ANDROID_NDK -DANDROID_ABI="arm64-v8a" -DANDROID_PLATFORM=android-26 ..

关于上述命令指定的工具链生成so之后,会导致出现 libc++_shared.so not found的问题

有两种解决方案,一种是直接修改上面的的命令改为如下,即增加参数-DANDROID_STL=c++_static 变成下面的命令

cmake325 -DCMAKE_TOOLCHAIN_FILE=/root/android_tools/android-sdk-linux/ndk/23.1.7779620/build/cmake/android.toolchain.cmake  \
 -DANDROID_NDK=$ANDROID_NDK  \
-DANDROID_ABI="arm64-v8a"   \
-DANDROID_PLATFORM=android-26  \
-DANDROID_STL=c++_static   ..

另一种是直接修改CMakeLists.txt


image.png

这两种方式本质上就是把共享库方式改成静态库方式打入可执行文件中

关于这个的解释可以参考
https://developer.android.com/ndk/guides/cmake#command-line的说明

image.png

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容