`
wangxiaohigh
  • 浏览: 1426623 次
文章分类
社区版块
存档分类
最新评论

Android NDK编译带STL的 C/C++ 程序

 
阅读更多

我的这个C/C++程序, 可以成功的交叉编译到中兴,烽火的机顶盒上运行, 原以为编译到android应该也是一件简单的事情, 但是做起来远比我想象的复杂得多。


我的程序中有 .C 文件 和 .CPP 文件 , 其中 .CPP 文件中用到了 STL的string, 编译成功后死活链接不到std::string库,提示报错 undefined reference to `std::basic_string 。

折腾了两天准备用NDK来 编译 stlport库, 但是以失败告终,报错如下:

[root@localhost jni]# /home/android-ndk-r6b/ndk-build
Compile++ thumb : stlport_shared <= dll_main.cpp
In file included from /home/android-ndk-r6b/samples/STLport-5.2.1/jni/stlport/stl/_stdexcept_base.h:25,
from /home/android-ndk-r6b/samples/STLport-5.2.1/jni/stlport/stl/_ios_base.h:22,
from /home/android-ndk-r6b/samples/STLport-5.2.1/jni/stlport/stl/_ios.h:23,
from /home/android-ndk-r6b/samples/STLport-5.2.1/jni/stlport/stl/_ostream.h:24,
from /home/android-ndk-r6b/samples/STLport-5.2.1/jni/stlport/stl/_string_io.h:23,
from /home/android-ndk-r6b/samples/STLport-5.2.1/jni/stlport/string:37,
from /home/android-ndk-r6b/samples/STLport-5.2.1/jni/src/dll_main.cpp:49:
/home/android-ndk-r6b/samples/STLport-5.2.1/jni/stlport/stl/_exception.h:56:34: error: exception: No such file or directory

编译stlport的Android.mk文件内容如下所列, 不知道为何会报上面的错误, 没有找到解决办法, 如果哪位大侠找到原因, 成功编译了stlport, 还望多多指点为谢。


stlport编译失败, 只能在另外想办法了, 最后终于找到了问题所在, 把 .C 文件后缀修改为 .CPP后 问题得到解决。

我应用程序的 Android.mk文件如下 :


我应用程序用到了STL,所以还得需要一个 Application.mk 文件, 内容如下 :


另外, 由于我的应用程序还需要用到 libiconv.a这个库, 但是android并没有这方面的支持, 所以我下载了libiconv的源码来通过NDK编译。

编译libiconv的 Android.mk文件内容如下:


编译libiconv的Application.mk文件内容如下:


至此, 应用程序编译完毕, 下来在Android平台上慢慢调试吧, 希望不要有问题。


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics