交叉编译使用libiconv

原文地址::https://blog.csdn.net/sinat_35706094/article/details/88182896

 

相关文章

1、Linux 编码转换 (iconv失败的解决方法)----https://blog.csdn.net/violet089/article/details/51568667

2、ARM开发板上iconv_open("utf-8", "gb2312") 调用失败的解决方法----https://blog.csdn.net/love_life2011/article/details/7086910#comments

3、linux下c语言利用iconv函数实现utf-8转unicode----https://www.cnblogs.com/etangyushan/p/3753847.html

4、交叉编译opencv报错:/usr/local/lib/libz.so: file not recognized: File format not recognized----https://blog.csdn.net/qingzhuyuxian/article/details/86588953

5、libiconv字符集转换库使用方法----https://blog.csdn.net/ying_593254979/article/details/12133391

6、使用gnu工具链自带iconv完成gbk/gb2312到unicode字符编码双向转换----https://whycan.cn/t_1023.html

 

 

一、环境

虚拟机:ubuntu-16.04 

iconv版本:libiconv-1.14.tar.gz下载地址:http://download.csdn.net/detail/shanleichicheng/4538600

交叉编译工具:

二、编译安装

1、./configure --prefix=/usr/local/libiconv_amba_install/ --host=armv7l-timesys-linux-gnueabi- CC=/home/iflytek-dyye/toolchain/bin/armv7l-timesys-linux-gnueabi-gcc CXX=/home/iflytek-dyye/toolchain/bin/armv7l-timesys-linux-gnueabi-g++ --enable-shared --enable-static

2、make

注意:

报错, error: ‘gets’ undeclared here (not in a function);

解决办法:vi 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

3、sudo make install

注意:

报错:armv7l-timesys-linux-gnueabi-ranlib command not found

解决方法:切换到管理员权限,sudo su,将交叉编译工具链地址加到~/.bashrc文件最后面

export PATH=/home/iflytek-dyye/toolchain/bin:$PATH

保存退出,重启系统,再进入当前目录下,sudo su进入管理员权限,再make install即可完成安装。

4、最后在prefix指定的目录下会生成相应工具和库。

三、参考

https://www.cnblogs.com/grimm/p/5663863.html

https://blog.csdn.net/wuyu92877/article/details/52472810

https://blog.csdn.net/yuan1125/article/details/51064680

https://blog.csdn.net/qq_22790049/article/details/52806954

https://blog.csdn.net/qq_22716879/article/details/51915981

https://blog.csdn.net/geekcome/article/details/6705418

https://blog.csdn.net/zhanglpql/article/details/14122209
————————————————
版权声明:本文为CSDN博主「小小笨小孩」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sinat_35706094/article/details/88182896

 

 

GNU libiconv-1.15和libintl-0.19.8.1,VS2015工程和 Makefile 命令行编译文件 CSDN-tags: libiconv1.15 libintl 0.19.8.1 VS2015 Makefile 声明: 代码为本人良心制作,虽然花费了一定的时间和精力,但不保证完全没有错误。如果您下载并使用了本代码,将其包含在您发布的应用中,给您带来了经济上,心理上,生活上的损失,本人不负有责任。 所有代码都基于官网进行修改,iconv的代码来源于libiconv-1.15的lib目录,intl的代码来源于gettext-runtime的intl目录。 intl需要iconv的支持,如果想单独编译不需要iconv的intl, 请自行修改intl目录下的config.h文件, /* Define if you have the iconv() function and it works. */ #define HAVE_ICONV 1 /* Define to 1 if you have the header file. */ #define HAVE_ICONV_H 1 为: /* Define if you have the iconv() function and it works. */ /* #undef HAVE_ICONV */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ICONV_H */ 并修改VS工程中预处理器定义,删掉/DDEPENDS_ON_LIBICONV=1 VS的工程为VS2015的工程文件,使用VC140工具集,如果没有2015,也可以用Makefile.mak文件来编译。 nmake /f Makefile.mak [DLL] [DEBUG] 指定 DLL=1 编译dll版本,默认是lib版本,libiconv.lib , libintl.lib。 指定 DEBUG=1 编译debug版本,默认是release版本。 同理,如果intl不需要iconv,请修改上面的配置文件选项,并, 删掉Makefile.mak中/DDEPENDS_ON_LIBICONV=1 配置文件的制作,参考了以下几处,修改的大概原则是,能定义的全定义了,就这样: https://github.com/kahrl/gettext-msvc 这个地址提供了libiconvlibintl的VS工程和配置文件。 https://github.com/winlibs 为编译PHP而修改的libiconvlibintl源码,libiconv是最新1.15版本,gettext不是。 附带的Cygwin目录中的工具 libiconv官方的制作文档,用cygwin配合VC,生成的配置文件。 一大堆的宏和函数搞得我头晕脑涨。所以配置文件如果有错误,也在所难免,所有修改的文件,如config.h,iconv.h,libintl.h都附带了原始文件。 如: 配置文件 原始文件 DLL原始文件 LIB原始文件 config.h config.h.in iconv.h iconv.h.build.in iconv.h.in localcharset.h localcharset.h.build.in localcharset.h.in libgnuintl.h libgnuintl.in.h 欢迎同学们下载测试。有问题可以给我发邮件travel981cn@139.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值