如何用android ndk和eclipse编译c++11代码
How to compile c++11 code with android ndk and eclipse?
我使用android NDK r8d和eclipse Juno。我正在尝试编译c++代码,其中使用c++ 11的东西,如mutex
, lock_guard
, shared_ptr
等在一个原生android项目在eclipse。
我得到如下错误:
我在这里遇到了一个类似的问题。它似乎对他们有用,但是那里的解释不完整,所以我不能让它为我工作。"error: 'shared_ptr'不是'std'的成员"
"fatal error: mutex: No such file or directory"
我将"NDK_TOOLCHAIN_VERSION=4.7"
添加到Application.mk
,将"LOCAL_CFLAGS += -std=c++11"
添加到Android.mk
文件。但是,它不能编译。
在上面的链接中,它说:
"确保标准库包含路径(如/android-ndk-r8d/sources/cxx-stl/gnu-libstdc++/4.7/include)在目标设置。"
如何以及在哪里插入它?
在eclipse IDE中也会出现错误(在源代码上,在编译之前)。我知道我应该定义"__GXX_EXPERIMENTAL_CXX0X__"
来解决它们,但我只是不知道把它放在哪里。
所以,如果有人能发表一个完整的解释,说明如何编译和使eclipse在c++ 11下工作,那就太好了。
关于你的第一个问题:
-
进入项目>属性> C/c++通用/路径和符号
-
在"Includes"选项卡中,添加适当的目录,例如:/android-ndk-r8d/资源/cxx-stl/gnu-libstdc + +/4.7/包括
关于你的第二个问题,我也在寻找答案。在Eclipse中如何定义GXX_EXPERIMENTAL_CXX0X宏绝对不清楚。
有人说它应该"作为预定义的宏添加到索引器中",但看起来我们都找不到实现它的方法…
我在其他地方读到它应该被添加到"C/c++ General/Paths and Symbols/Symbols/GNU c++"中,但我在我的Indigo版本中找不到"Symbols/GNU c++"部分。
我发现在启动eclipse之前导出一个环境变量NDK_TOOLCHAIN_VERSION=4.8。
Eclipse使用ndk默认的4.6版本的工具链,如果NDK_TOOLCHAIN_VERSION没有定义,并且gcc切换到这个版本不支持所有c++11的未来,如多线程等。
- 如何在 atom 中编译 c++11
- 从远程主机中编译C 11代码的问题
- 为什么此代码编译 (C++11) 而没有类型不匹配错误
- 使用 g++ 5.4 编译 C++11
- 在Visual Studio代码中编译C++11
- 为什么"bool c = nullptr ;"编译 (C++11)?
- 如何使用 Orwell Dev-C++ 编译 C++11 代码
- 错误在Windows上使用Clang编译C 11程序
- 尝试在Linux上使用Clang++编译c++11 regex教程时出错
- 如何在Ubuntu上使用Eclipse编译C++11
- 使用 g++ 编译 C++11
- 如何更新 clang 版本以编译 C++11 项目?(在 Mac 上)
- g++错误,当试图用Rcpp编译c++11时
- 如何让g++使用move构造函数编译c++11代码
- 我如何在Ubuntu中编译c++ 11标准
- 在VS2010中编译c++ 11中的代码时,std::function()是否检查类型
- 为较旧的Linux编译c++ 11程序
- 使用-Wpedantic选项编译c++ 11:是否有一个选项可以只禁用关于未命名结构的警告
- 用Clang编译c++11代码的不完整类型
- 在CentOS for Windows上交叉编译c++ 11/14