前言
正文
磕磕绊绊终于弄上了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导致这里编译失败。
那么怎么

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

被折叠的 条评论
为什么被折叠?



