libiconv交叉移植

原创 2016年08月28日 16:10:42

下载

http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz

 具体解释一下,build就是你正在使用的机器,host就是你编译好的程序可以运行的平台,target就是你编译的程序可以处理的平台.这个build和host比较好理解,但是target就不好办了,到底什么意思呢?一般来说,我们平时所说的交差编译用不到他target的,比如./configure --build=i386-linux,--host=arm-linux就可以了,在386的平台上编译可以运行在arm板的程序.但是,一般我们都是编译程序,而不是编译工具,如果我们编译工具,比如gcc,这个target就有用了.如果我们需要在一个我们的机器上为arm开发板编译一个可以处理mips程序的gcc,那么target就是mips了.不知道我的解释是否正确,如果大家看到了这篇帖子,觉得不对,批评指正.

--target=arm-linux 可以不用

./configure CC=/home/self dir/arm-none-linux-gnueabi-gcc --target=arm-linux --host=arm-linux --prefix=/self dir/bin --enable-shared --enable-static 

make

make install

在bin目录链接静态库

 /home/self dir/arm-none-linux-gnueabi-gcc -o in in.c -L. -liconv

执行./in

如果动态库没有下载到嵌入式lib目录会提醒找不到libiconv.so.2    下载 libiconv.so.2.5.1 然后 mv libiconv.so.2.5.1 libiconv.so.2

in.c


#include <iconv.h>
#define OUTLEN 255
main()
{
char in_utf8[] = "姝e?ㄥ??瑁?";
char in_gb2312[] = "正在安装";
char out[OUTLEN];
int rc;
//unicode码转为gb2312码
rc = u2g(in_utf8,strlen(in_utf8),out,OUTLEN);
printf("unicode-->gb2312 out=%sn\n",out);
//gb2312码转为unicode码
in_gb2312[1] = 0;
rc = g2u(in_gb2312,strlen(in_gb2312) ,out,OUTLEN);
printf("gb2312-->unicode out=%sn\n",out);
}
//代码转换:从一种编码转为另一种编码
int code_convert(char *from_charset,char *to_charset,char *inbuf,int inlen,char *outbuf,int outlen)
{
iconv_t cd;
int rc;
char **pin = &inbuf;
char **pout = &outbuf;


cd = iconv_open(to_charset,from_charset);
if (cd==0) return -1;
memset(outbuf,0,outlen);
if (iconv(cd,pin,&inlen,pout,&outlen)==-1) return -1;
iconv_close(cd);
return 0;
}
//UNICODE码转为GB2312码
int u2g(char *inbuf,int inlen,char *outbuf,int outlen)
{
return code_convert("utf-8","gb2312",inbuf,inlen,outbuf,outlen);
}
//GB2312码转为UNICODE码
int g2u(char *inbuf,size_t inlen,char *outbuf,size_t outlen)
{
printf("gb len %d\n", inlen);
return code_convert("gb2312","utf-8",inbuf,inlen,outbuf,outlen);
}

相关文章推荐

最全面的 C++ 资源、框架大全

标准库 C++标准库,包括了STL容器,算法和函数等。 C++ Standard Library:是一系列类和函数的集合,使用核心语言编写,也是C++ISO自身标准的一部分。 Sta...

使用iconv命令轻松实现linux下字符集编码的转换-转

昨天晚上郎师兄打电话说,我的结果文件他打开是乱码,问我是不是字符编码没处理好。早晨早早的来到实验室,请教了下同学,才知道linux shell 配置文件中默认的字符集编码为UTF-8 。UTF-8是u...
  • xp5xp6
  • xp5xp6
  • 2016年01月16日 11:47
  • 162

libiconv 交叉编译和调用方法(UTF-8和GB2312转换)

1、解压 libiconv-1.14.tar.gz;进入libiconv-1.14目录 2、./configure --host=arm-linux-none-gnueabi-gcc --enable...

libiconv-1.14.tar.gz在arm上的移植

通过交叉编译工具链生成arm平台上的iconv链接库和头文件 操作系统:centos6.5 libiconv-1.14.tar.gz下载地址:http://download.csdn.net/de...

基于android,移植libxml2和libiconv

  • 2013年11月18日 18:07
  • 8.06MB
  • 下载

QT unixODBC+freetds连接sqlserver并交叉编译移植到ARM上

最近产品需要做一个数据上传功能。客户要求直接写入SQLserver数据库。之前QT连接数据库是默认来年将诶sqlite数据库。由于sqlite是QT默认自带的操作起来比较简单,但是SQLserver ...

Qt 4.8.4 交叉编译移植

  • 2014年12月25日 08:49
  • 80KB
  • 下载

交叉编译VIM并移植到ARM嵌入式Linux系统

一、编译环境: Host机:ubuntu-16.10(32bit) Target:arm     交叉工具链:arm-linux-gnueabi-gcc     工具包:               ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:libiconv交叉移植
举报原因:
原因补充:

(最多只允许输入30个字)