利用NDK编译libiconv

来源:互联网 发布:网络母婴品牌排行榜 编辑:程序博客网 时间:2024/05/22 04:37

libiconv在NDK中未开放,因此在代码中无法直接引用iconv.h头文件,会报错no such file ordirectory。这时需要将libiconv的源码利用NDK重新交叉编译。

1.下载libiconv的源码:https://github.com/pierrezurek/iconv

2.在源码的根目录下./configure,这样才能生成iconv.h和config.h

3.在android.mk文件中添加

LOCAL_PATH:= $(call my-dir)


include $(CLEAR_VARS)
LOCAL_MODULE := iconv
LOCAL_CFLAGS := \
  -Wno-multichar \
  -D_ANDROID \
  -DLIBDIR="c" \
  -DBUILDING_LIBICONV \
  -DIN_LIBRARY


LOCAL_C_INCLUDES := \
$(LOCAL_PATH)/libiconv-1.13.1 \
  $(LOCAL_PATH)/libiconv-1.13.1/include \
  $(LOCAL_PATH)/libiconv-1.13.1/lib \
  $(LOCAL_PATH)/libiconv-1.13.1/libcharset/include
    
LOCAL_SRC_FILES := \
  libiconv-1.13.1/libcharset/lib/localcharset.c \
  libiconv-1.13.1/lib/iconv.c \
  libiconv-1.13.1/lib/relocatable.c
include $(BUILD_STATIC_LIBRARY)

后面再加上一个动态库的编译即可。

4.利用如上的makefile直接对源码编译会出现找不到langinfo的错误,注释掉config.h里面的langifo定义行,问题解决。之后还会报c undeclaired错误,localcharset.c文件中的int c;语句放到该函数的开头,问题解决。

5.至此,libiconv可以成功编译生成.a文件。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 手机卡里还有话费怎么办 多余的话费要怎么办 联通流量欠费500怎么办 手机卡没了怎么办呢 联通显示无服务怎么办 大王卡停用了怎么办 手机卡中 剩余话费怎么办 小米被流量限制怎么办 支付宝禁止联网怎么办 手机号登录不上怎么办 电信手机号无法打电话怎么办 新手机号无法注册怎么办 电信手机怎么办流量包 qq华夏到监牢怎么办 炫舞被骗2900怎么办 qq好友申诉后怎么办 无好友辅助申请怎么办 辅助申诉成功后怎么办 qq绑不了手机号怎么办 新办号码有微信怎么办 两手机互换号后微信怎么办 手机申请不了qq怎么办 快手账号保护了怎么办 qq号过期登不上怎么办 xp 登陆界面不见了怎么办 手机号qq 别人登录怎么办 qq号申请频繁怎么办 qq号实名验证怎么办 陌陌没法注册怎么办 腾讯q币充值错误怎么办 手机号码注册微信号怎么办 q币充错了号怎么办 微信超额度提现都不可以怎么办 微信发红包转账限额怎么办 银行卡没设密码怎么办 宜人贷逾期一天怎么办 快手实名已认证怎么办 爱奇艺充会员没有银行卡怎么办 手机qq内存太大怎么办 借呗逾期半年怎么办 支付宝支付错误怎么办