libiconv android编译,linux环境下libiconv库基于Android NDK的编译方法
libiconv是一個跨平臺的提供轉(zhuǎn)碼函數(shù)的開源庫,它提供了一個轉(zhuǎn)換函數(shù):iconv()來實現(xiàn)不同編碼之間的轉(zhuǎn)換,在Android平臺上libxml2庫的編譯需要用到libiconv庫,所以需要編譯出libiconv庫才能夠?qū)崿F(xiàn)libxml2的基于Android NDK的編譯,為此對libiconv庫進行了編譯分析,最終成功,并以此進行記錄。至于Android NDK平臺的編譯環(huán)境搭建具體可以參考我寫的其它博文。下面就介紹如何實現(xiàn)libiconv庫的Android NDK環(huán)境編譯。如果轉(zhuǎn)載請保留該文章出處:http://www.shanzhashu.info/archives/220.html
首先,到官網(wǎng)下載最新版的libiconv庫:http://ftp.gnu.org/pub/gnu/libiconv/,我編譯時為1.14版,libiconv-1.14.tar.gz,解壓該文件到linux系統(tǒng)中指定目錄,然后把其中的源文件全部放到jni文件中。首先在linux環(huán)境中進行配置,即首先對libiconv庫執(zhí)行configure,生產(chǎn)linux環(huán)境下的config.h文件,因為這樣生產(chǎn)的config.h里面定義了很多l(xiāng)inux平臺下的宏,安裝方法:首先,$./configure,然后$make,然后構建Android.mk文件放到jni目錄中。
Android.mk文件內(nèi)容:
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 += \
$(LOCAL_PATH)/include \
$(LOCAL_PATH)/libcharset \
$(LOCAL_PATH)/lib \
$(LOCAL_PATH)/libcharset/include \
$(LOCAL_PATH)/srclib
LOCAL_SHARED_LIBRARIES := libiconv
include $(BUILD_EXECUTABLE)
執(zhí)行編譯 $ndk-build
1、編譯時提示:
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 0
2、提示錯誤:
報“c undeclaired”錯誤
解決方法:
修改文件/libcharset/lib/localcharset.c中函數(shù)get_charset_aliases (void)
搜索:int c;
把該變量定義放到該函數(shù)的開始處。
執(zhí)行$ndk-build,編譯libiconv.so成功。
到目錄libs/armeabi-v7a下可以找到。
如果執(zhí)行程序則需要打包到Android平臺下。
總結
以上是生活随笔為你收集整理的libiconv android编译,linux环境下libiconv库基于Android NDK的编译方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IIS问题
- 下一篇: 推荐一款好用的Web端JSON在线编辑器