使用gnu libstdc++编译NDK代码

6
我想使用GNU libstdc++编译我的NDK代码,你知道怎么做吗?
2个回答

6

你应该在 Application.mk 文件中增加一行代码。

APP_STL := gnustl_static

如果你想将它静态链接,并且

APP_STL := gnustl_shared

如果你想将其用作共享库,这里是典型的Application.mk示例(它应该放置在与你的Android.mk文件相同的文件夹中):

以下是典型的Application.mk示例(应放置在与Android.mk相同的文件夹中):

APP_OPTIM := release
APP_PLATFORM := android-7
APP_STL := gnustl_static
APP_CPPFLAGS += -frtti 
APP_CPPFLAGS += -fexceptions
APP_CPPFLAGS += -DANDROID
APP_ABI := armeabi-v7a

更多关于 Application.mk 的信息可以在您的 NDK 文档中找到:docs/APPLICATION-MK.html

@Sergey..我在哪里可以找到freeimage.h使用的参考库? - Sreekanth Karumanaghat
1
如果你选择使用 .a 文件,那么你应该只包含“freeimage.h”。 - Sergey K.
我得到了与没有Application.mk文件一样的错误 :( - makar
也许Application.mk似乎存在,因为它似乎可以#include <vector>,但就像c++11无法工作一样。我有std::vector<int> ints = {1,2,3};,但我收到错误消息:在C++98中,“ints”必须通过构造函数进行初始化,而不是{}。 - makar
1
哦,我明白了,需要添加 APP_CPPFLAGS += -std=gnu++11。谢谢你的帮助! - makar
显示剩余3条评论

4
请在您的Application.mk文件中添加以下行:
APP_STL := gnustl_static

(或者使用gnustl_shared,如果你不想静态链接它。)

1
请查看Android NDK中的docs/CPLUSPLUS-SUPPORT.html文件,以获取更多关于此的信息。 - Mārtiņš Možeiko
我现在没有Application.mk文件...我只有Android.mk文件..有人能告诉我Application.mk的格式应该是什么,最好附带一个例子吗?先谢谢了。 - Sreekanth Karumanaghat
1
你的 NDK 安装文件夹中的 docs 文件夹中应该有一个 APPLICATION-MK.html 文件。 - Michael
@MārtiņšMožeiko,请查看http://stackoverflow.com/questions/11666200/ndk-error-on-doing-ndk-build。 - Sreekanth Karumanaghat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接