libiconv是一个跨平台的提供转码函数的开源库,它提供了一个转换函数:iconv()来实现不同编码之间的转换,在Android平台上libxml2库的编译需要用到libiconv库,所以需要编译出libiconv库才能够实现libxml2的基于Android NDK的编译,为此对libiconv库进行了编译分析,最终成功,并以此进行记录。至于Android NDK平台的编译环境搭建具体可以参考( http://www.linuxidc.com/Linux/2011-09/42646.htm )。下面就介绍如何实现libiconv库的Android NDK环境编译。首先,到官网下载最新版的libiconv库:http://ftp.gnu.org/pub/gnu/libiconv/,我编译时为1.14版,libiconv-1.14.tar.gz,解压该文件到linux系统中指定目录,然后把其中的源文件全部放到jni文件中。首先在linux环境中进行配置,即首先对libiconv库执行configure,生产linux环境下的config.h文件,因为这样生产的config.h里面定义了很多linux平台下的宏,安装方法:首先,$./configure,然后$make,然后构建Android.mk文件放到jni目录中。
Android.mk文件内容:LOCAL_PATH
:= $
(call
my-dir
)#libiconv.soinclude $
(CLEAR_VARS
)LOCAL_MODULE
:= libiconv
LOCAL_CFLAGS
:= -Wno-multichar
-DANDROID
-DLIBDIR
="c" -DBUILDING_LIBICONV
-DIN_LIBRARY
LOCAL_SRC_FILES
:= libcharset
/lib
/localcharset
.c
lib
/iconv
.c
lib
/relocatable
.c
LOCAL_C_INCLUDES
+= $
(LOCAL_PATH
)/include
$
(LOCAL_PATH
)/libcharset
$
(LOCAL_PATH
)/lib
$
(LOCAL_PATH
)/libcharset
/include
$
(LOCAL_PATH
)/srclib
include $
(BUILD_SHARED_LIBRARY
)#testinclude $
(CLEAR_VARS
)LOCAL_MODULE
:=genutf8
LOCAL_SRC_FILES
:= tests
/genutf8
.c
LOCAL_C_INCLUDES
+= $
(LOCAL_PATH
)/include
$
(LOCAL_PATH
)/libcharset
$
(LOCAL_PATH
)/lib
$
(LOCAL_PATH
)/libcharset
/include
$
(LOCAL_PATH
)/srclibLOCAL_SHARED_LIBRARIES
:= libiconv
include $
(BUILD_EXECUTABLE
)执行编译 $ndk-build1、编译时提示:libiconv-1.14/jni/libcharset/lib/localcharset.c:51:24: error: langinfo.h: No such file or directory解决方法:修改目录文件libcharset/config.h的宏定义,禁止该宏定义:/* Define if you haveand nl_langinfo(CODESET). */#define HAVE_LANGINFO_CODESET 02、提示错误:报“c undeclaired”错误解决方法:修改文件/libcharset/lib/localcharset.c中函数get_charset_aliases (void)搜索:int c;把该变量定义放到该函数的开始处。执行$ndk-build,编译libiconv.so成功。到目录libs/armeabi-v7a下可以找到。如果执行程序则需要打包到Android平台下。Linux Fedora 16 ssh 链接问题Linux下的分区工具相关资讯 Android开发教程
- 用IntelliJ IDEA开发Android程序图 (03/23/2013 10:22:55)
- Android--ListView滚动条样式 (02/17/2013 11:15:44)
- Android--GestureOverlayView,手势 (02/17/2013 11:11:53)
| - Android中保存并设置ListView位置 (02/17/2013 11:18:45)
- Android--ContentProvider跨程序访 (02/17/2013 11:13:52)
- Android--通过ActivityGroup实现 (02/17/2013 11:08:45)
|
本文评论 查看全部评论 (0)