[英]Ubuntu+CMake, Cannot static-build C/C++ android-ndk programs
我的朋友,我遇到了以下让我头疼的问题。 你能帮我指出问题出在哪里吗?
搭建环境涉及三个库
以上三个库,通过static库链接到target-exe
A: cmake
命令行中指定了-DANDROID_STL=c++_static
,但是make编译好的android-cxx-program
还是需要动态加载libc++_shared.so
文件!
B:我尝试通过替换NDK工具链目录下的/so等文件进行静态编译,结果要么找不到符号“C++/STL”,要么没有效果。
我强制 cmake 链接libc++_static.a
文件,除了建文件量增加后,但对于依赖仍然需要libc++_shared.so
!
现在我不知道如何在不依赖libc++_shared.so
的情况下进行编译。
因为,需要编译成独立的exe可执行Android C/C++原生程序,不是通过Java/JNI调用的,现在解决不了不依赖libc++_shared.so
的问题。
根据NDK C++ 库支持:
通常,如果您的应用程序中只有一个共享库,则只能使用 C++ 运行时的 static 变体。
注意:此规则适用于您的代码和第三方依赖项。
因此,这意味着您需要使用"-DANDROID_STL=c++_shared"
编译所有内容。
这里还有一个示例,说明使用不同的 STL 库时会发生什么: https://stackoverflow.com/a/66050613/5130269
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.