iconv_open返回-1

iconv_open在ARM平台返回-1,其原因是ARM平台可能没有安装libiconv库,现在解决方法是自行交叉编译后进行安装,步骤如下:

一、下载iconv源代码

下载路径:http://ftp.gnu.org/gnu/libiconv/libiconv-1.14.tar.gz

二、交叉编译

2.1、修改srclib/stdio.in.h文件

找到 _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");这一行,然后在这一行的前后加上条件编译即可,修改后的内容如下:

#if defined(__GLIBC__) && !defined(__UCLIBC__) && !__GLIBC_PREREQ(2, 16)
 
             _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");             
 
#endif

2.2、配置并编译

./configure --prefix=$PWD/out --host=arm-linux

make && make install

三、安装到ARM平台

拷贝out/lib/preloadable_libiconv.so到ARM平台的/lib目录,设置系统环境变量如下:

export LD_PRELOAD=/lib/preloadable_libiconv.so

至此安装完成,重新运行程序输出正常。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值