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.so
include $(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)
#test
include $(CLEAR_VARS)
LOCAL_MODULE :=genutf8
LOCAL_SRC_FILES := tests/genutf8.c
LOCAL_C_INCLUDES += \