我的这个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平台上慢慢调试吧, 希望不要有问题。
分享到:
相关推荐
SonarQube扫描NDK编译的C/C++项目示例项目
基于Opensl接口实现的录音demo,代码经过测试验证,功能正常,使用循环BUFFER实现录音和写入文件功能。需要的朋友可以参考使用
配置项目包含: 1. 配置JDK和Android SDK以及Android NDK的环境变量; ... 3. 将Android/Java项目转变成C++项目;...6. 将NDK中C/C++库文件路径加入到项目组(去除编译错误和警告提示,包括NDK的API和C/C++库):
使用Android NDK编译Android平台的eXosip库,有静态库和动态库。
使用NDK开发C/C++程序,无需安装Cygwin
Android NDK调用C/C++ 简单样例,适合初次搭建ndk平台的人参考
ubuntu下android ndk编译环境搭建,android应用程序开发,环境编译
android studio中使用ndk编译.so文件,调用C/C++代码(jni编程)
本书顺应Android软/硬件、云计算整合潮流,详细剖析了NDK开发中涉及的各类问题和解决方案:搭建Android NDK开发环境的每一步细节,开发第一个Android NDK程序,Android NDK中Java与C/C++代码的互相调用,Facade设计...
android NDK入门篇----混合使用java和c/c++代码 源码工程 包括头文件 源文件以及生成的so库
Android C++高级编程 使用NDK,Android C++高级编程 使用NDK
基于Eclipse开发NDK ,开发C ,C++ 和 Java的源码,可以查看Java调用c/c++, 和c/c++调用Java的内容
Android调用C/C++(NDK),压缩包内含代码及说明文档(下载NDK和构建工具、构建及运行第一个NDK项目,有图片,有注解,手把手教会)
live555 库 和 testRtspClient.cpp 编译生成静态库 和 可执行文件 testRtspClient 编译方法: 首先进入各个模块执行 Makefile,将静态库拷贝至上层目录 执行 ndk-build
下载 https://developer.android.google.cn/ndk/downloads/ https://developer.android.google.cn/ndk/downloads/older_releases 编译ffmpeg:最高版本16b,再高的版本...export NDK=/home/quantum6/android-ndk-16b
本文简要介绍了如何安装Android NDK的C/C++语言开发套件,并介绍了如何创建一个独立的ARM交叉编译工具链。通过该工具链接可以交叉编译Android上的C语言程序,也可以用来编译Android Linux内核。文中举例介绍了如何...
JNI开发Java和C/C++互相传递List集合, 可以参考: Java从C/C++获取List集合对象:https://blog.csdn.net/niuba123456/article/details/80994166 Java传递List集合对象到C/C++ ...
用Android_NDK编译FFmpeg,RTSP手机视频
Android ndk编译demo,在soxr的源码上完善了Android NDK的编译脚本,快速编译出需要的soxr
NDK开发C/C++配置Log打印日志,可以参考:https://blog.csdn.net/niuba123456/article/details/80991477