C++程序移植到Android平台

来源:互联网 发布:稀疏矩阵的压缩方法 编辑:程序博客网 时间:2024/05/18 02:11

Android开发环境搭建 参考

http://www.cnblogs.com/pharen/archive/2011/09/13/2174592.html

http://blog.csdn.net/orzorz/article/details/5503751

因项目需要,需要将原先跑在linux下的C++程序移植到Android平台。

操作系统:ubuntu

编译环境:Android ndk(我装的是android-ndk-r6b) (安装请参考

http://blog.csdn.net/yang_hui1986527/article/details/6850157 )

以编译libpinpad为例

先将要编译的libpinpad工程拷入android-ndk-r6b目录下的samples中,进入libpinpad目录

在其中新建jni目录,将libpinpad中的文件拷入jni中。

编写Android.mk文件

LOCAL_PATH:= $(call my-dir)

APP_STL := gnustl_static

APP_CPPFLAGS := -fexceptions

include $(CLEAR_VARS)

#LOCAL_CFLAGS += -I~/usr/include

LOCAL_INCLUDES += $(LOCAL_PATH)      

LOCAL_LDLIBS :=    //引入库的路径

LOCAL_C_INCLUDES :=include   //引入的头文件的路径

LOCAL_MODULE_TAGS := optional

LOCAL_SRC_FILES += select.cpp ztpinpad.cpp ztpnd_interface.c des.c public.c clist.c  csocket.c cserial.c taskdispatcher.cpp tracelog.c  //源文件

LOCAL_PRELINK_MODULE := false

LOCAL_MODULE:= ztpinpadserver   //编译生成的文件名

include $(BUILD_EXECUTABLE)  //编译成可执行文件

说明:

如果要编译成可执行文件

include $(BUILD_SHARED_LIBRARY)  //编译成库文件

引入了外部库:

LOCAL_LDLIBS := -L../app/lib -lztcard -lztpublic -lc 

头文件路径:

LOCAL_C_INCLUDES := $(LOCAL_PATH) \                   $(LOCAL_PATH)/home/yuansu/android-ndk-r6b/samples/libsmartcard/app/inc   

编写完Android.mk文件后编译即可

ndk-build  

编译完后,会在jni同级目录下生成 libs obj文件

编译生成的文件在libs/armeabi

编译问题:

出现#include <deque>头文件找不到、

 error: ISO C++ forbids declaration of 'deque' with no type

之类的问题时

解决办法:编写Application.mk文件

APP_STL := gnustl_static

APP_CPPFLAGS := -fexceptions

Application文件,貌似可以解决许多c++头文件在android编译环境中找不到问题。

2013-6-4

0 0
原创粉丝点击