繁体   English   中英

Ubuntu+CMake,无法静态构建 C/C++ android-ndk 程序

[英]Ubuntu+CMake, Cannot static-build C/C++ android-ndk programs

我的朋友,我遇到了以下让我头疼的问题。 你能帮我指出问题出在哪里吗?

NDK r20b

搭建环境涉及三个库

  1. C ++ 11/ STL
  2. OpenSSL 1.1.1i
  3. 提升 1.7.0

以上三个库,通过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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM