libiconv android编译,Android跨平台编译 —— ICONV

在Android项目中遇到libiconv编译问题,报错undefined reference。发现iconv在ndk r16b中被裁剪。通过添加CMake编译选项,手动编译iconv源码,修改config.h文件禁用HAVE_LANGINFO_CODESET宏,最终解决编译错误,生成libiconv.so库。

前言

正文

磕磕绊绊终于弄上了boost,今个很高兴!!边上眼睛就是一同编译!然后醒来发现出问题了……

undefined reference to `libiconv_open'

undefined reference to `libiconv'

undefined reference to `libiconv_close'

undefined reference to `libiconv_open'

赶紧看下源文件,没问题啊,也包含了iconv.h,并且跳转之后链接到了

ndk-bundle/sysroot/usr/include

为何没定义?仔细看,发现问题出在

#if __ANDROID_API__ >= __ANDROID_API_FUTURE__

你可以继续进入__ANDROID_API_FUTURE__的定义

/*

* Magic version number for a current development build, which has

* not yet turned into an official release.

*/

#ifndef __ANDROID_API_FUTURE__

#define __ANDROID_API_FUTURE__ 10000

#endif

呵呵,发现iconv已经在ndk r16b 中裁剪掉了,所以如果我们需要使用iconv,那么就需要自己重新打包放上去。

自己如何打包,网上搜索,也许你会找到一些资料,不过基本上都是挺重复了,写一个android.mk,然后使用ndk-build去打包。

不过笔者照着做的时候失败了,还有一篇文章是

也说了一个编译方法,不过我跟着做的时候还是失败了。可能的原因在于ndk r16b已经把gcc的编译工具转移到了llvm导致这里编译失败。

那么怎么

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值