微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在android工具链上编译C标准库

我有一个非常简单的helloworld.cpp程序

#include <iostream>
using namespace std;
int main ()
{
  cout << "Hello World!";
  return 0;
}

我正在尝试使用工具链中的交叉编译器为android x86编译它:

/Users/me/android-ndk-r8/toolchains/x86-4.4.3/prebuilt/darwin-x86/bin/i686-android-linux-g++ helloworld.cpp -L "/Users/me/android-ndk-r8/sources/cxx-stl/stlport/libs/x86/" -lstlport_static

但是,我得到错误

helloworld.cpp:2:20: error: iostream: No such file or directory

知道为什么吗?

解决方法:

在“Standalone Toolchain”下查看NDK附带的documentation.html文件.它说如果你以这种方式调用编译器,你将无法“使用任何C STL”.但是,正如文档所解释的那样,如果您首先创建“自定义”工具链安装,则可以使用以下命令:

$NDK/build/tools/make-standalone-toolchain.sh --platform=android-8 --install-dir=/tmp/my-android-toolchain --arch=x86

其中$NDK是NDK目录的路径.注意–arch = x86这意味着工具链是专门为x86 Android准备的.这将在一个目录中准备您需要的内容,包括STL标头和文件夹.然后,您应该能够使用-lstdc链接STL(静态版本),例如:

/tmp/my-android-toolchain/bin/i686-android-linux-g++ helloworld.cpp -lstdc++

有关更完整的说明,请参阅NDK文档.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐