交叉编译libiconv库移植到mips平台openwrt系统

最近一段时间由于项目原因,需要将现有应用程序移植到mips平台的openwrt系统上。使用对应的编译工具链编译应用程序后就扔到系统上跑了,但是看log发现汉字转码部分报错(utf-8和gbk互转),iconv_open返回值为-1,errno为2。将转码格式中的gbk换成其他格式不报错,因此猜测是库中缺少对gbk编码的支持。

网上查了下发现openwrt中自带库对很多亚洲字符集做了屏蔽,解决方法下载libiconv源码,交叉编译产生需要的库文件。

libiconv源码下载地址

我下载的是libiconv-1.15.tar.gz,解压该文件,进入文件目录执行(注:先配置编译工具链环境然后执行下列操作):

./configure --host=mipsel-openwrt-linux --enable-shared --enable-static --prefix=/usr/local/

make

make install

之后在/usr/local/lib/目录下可以找到libiconv的静态库(libiconv.a)和动态库(libiconv.so),在/usr/local/include/目录下可以找到头文件iconv.h。将库文件和头文件复制到项目中重新编译应用程序,将生成的应用程序再次扔到系统中跑,问题解决。

(注:本篇只是记录自己解决问题的方法,如果有错误之处,还望各位博友不吝指正)

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
atk-1.25.2.tar.gz atk-1.26.0.tar.gz bigreqsproto-1.1.2.tar.bz2 cairo-1.8.6.tar.gz CPAN-1.94.tar.gz DirectFB-1.1.1.tar.gz expat-2.0.1.tar.gz expat-2.1.0.tar.gz ExtUtils-MakeMaker-6.20.tar.gz fontconfig-2.4.2.tar.gz fontconfig-2.6.0.tar.gz fontconfig-2.7.3.tar.gz freetype-2.3.5.tar.bz2 freetype-doc-2.3.6.tar.bz2 glib-2.12.1.tar.bz2 glib-2.14.4.tar.gz glib-2.18.2.tar.bz2 glibc-2.2.5.tar.bz2 gtk+-2.10.14.tar.bz2 gtk+-2.10.7.tar.bz2 gtk+-2.12.12.tar.bz2 inputproto-2.2.tar.bz2 jpegsrc.v6b.rar jpegsrc.v6b.tar.gz kbproto-1.0.6.tar.bz2 libpng-1.2.10.tar.bz2 libpng-1.2.32.tar.lzma libpthread-stubs_0.1.orig.tar.gz libsndfile-1.0.28.tar.gz libtool-1.5.22.tar.gz libtool-2.4.2.tar.xz libX11-1.0.3.tar.bz2 libX11-1.2.2.tar.bz2 libX11-1.3.2.tar.gz libX11-1.5.0.tar.bz2 libXau-1.0.7.tar.bz2 libXau-1.0.8.tar.bz2 libxcb-1.3.tar.bz2 libxcb-1.4.tar.bz2 libxcb-1.8.1.tar.bz2 libXdmcp-1.0.3.tar.gz libXdmcp-1.1.2.tar.bz2 libXext-1.0.1.tar.bz2 libXfont-1.4.4.tar.bz2 libXft-2.1.12.tar.bz2 libXft-2.1.13.tar.bz2 libxml2-2.6.30.tar.gz libxml2-2.6.32.tar.gz libxslt-1.1.29.tar.gz libXt-1.0.6.tar.bz2 pango-1.16.4.tar.bz2 pango-1.18.2.tar.gz pango-1.22.1.tar.bz2 pango-1.24.4.tar.bz2 pixman-0.24.0.tar.bz2 poky-pinky-3.1.1.tgz stubs-soft.h tiff-3.8.2.tar.gz tiff-4.0.7.tar.gz tslib-1.4.tar.gz xcb-proto-1.7.1.tar.bz2 xcmiscproto-1.1.2.tar.bz2 xcmiscproto-1.2.2.tar.bz2 xextproto-7.2.1.tar.bz2 xorg-server-1.3.0.0.tar.bz2 xorg-server-1.4.2.tar.bz2 xproto-7.0.23.tar.bz2 xtrans-1.2.7.tar.bz2 zlib-1.2.3.rar zlib-1.2.3.tar.gz zlib-1.2.5.tar.gz
为了在 Android 平台上使用 libiconv ,我们需要进行交叉编译。下面是一个简单的步骤: 1. 下载 libiconv 源代码 你可以从 GNU 的官方网站上下载最新版本的 libiconv 源代码。 2. 安装交叉编译工具链 在你的开发机器上安装适合 Android 平台交叉编译的工具链。 3. 配置交叉编译环境变量 在你的 shell 配置文件中,添加以下环境变量: ``` export PATH=$PATH:/path/to/android/toolchain/bin export SYSROOT=/path/to/android/sysroot export CC=arm-linux-androideabi-gcc export CXX=arm-linux-androideabi-g++ export AR=arm-linux-androideabi-ar export RANLIB=arm-linux-androideabi-ranlib export LDFLAGS="-L/path/to/android/sysroot/usr/lib -L/path/to/android/sysroot/lib" export CPPFLAGS="-I/path/to/android/sysroot/usr/include -I/path/to/android/sysroot/include" ``` 其中,`/path/to/android/toolchain` 是你安装的交叉编译工具链的根目录;`/path/to/android/sysroot` 是你安装的 Android 平台的 sysroot 目录。 4. 配置 libiconv 进入到 libiconv 的源代码目录中,执行以下命令: ``` ./configure --host=arm-linux-androideabi --prefix=/path/to/android/sysroot/usr --enable-static --disable-shared ``` 其中,`/path/to/android/sysroot/usr` 是你希望安装 libiconv 的目录。 5. 编译和安装 libiconvlibiconv 的源代码目录中,执行以下命令: ``` make make install ``` 这将会编译和安装 libiconv 到指定的目录中。 现在你已经成功地在 Android 平台交叉编译libiconv
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值