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);
}

arm上移植iconv命令

1、下载源码包libiconv-1.1.4.tar.gz   下载地址:http://ftp.gnu.org/pub/gnu/libiconv/ 2、tar xvf libiconv-1.1.4...
  • cuijianzhongswust
  • cuijianzhongswust
  • 2011年11月25日 07:43
  • 3604

mips体系堆栈回溯分析与实现

在上家公司做 linux 驱动开发主要基于mips架构,在内核下有一个好玩的函数 dump_stack, 只要调用到这个函数就能把函数的调用栈给打印出来,十分方便,不再需要kgdb断点了。   现...
  • XscKernel
  • XscKernel
  • 2015年08月28日 17:16
  • 3537

arm移植libiconv(字符编码转换)

1. http://www.gnu.org/software/libiconv/ 下载 libiconv-1.14.tar.gz     2. tar zxvf libiconv-1.14.t...
  • dyzhen
  • dyzhen
  • 2016年03月12日 11:14
  • 2050

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

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

MIPS之指令集介绍

简单来说,指令集就是CPU能看得懂的语音,可以称之为机器语言。 CPU指令集主要包括CISC(复杂指令集)和RISC(精简指令集)。 形象点说, CISC类似于汉语,每一句话都是由汉...
  • u011026885
  • u011026885
  • 2016年11月11日 22:00
  • 1016

MIPS:字符串查找比较

实验目的:用MIPS的精简指令实现x86中复杂的串指令的功能,体会其区别 实验内容:利用系统功能调用从键盘输入一个字符串,然后输入单个字符,查找该字符串中是否有该字符。具体要求如下: (1) 如果...
  • u012068540
  • u012068540
  • 2014年04月06日 23:10
  • 1551

第三方源码移植

第三方源码移植移植是什么? 就是说将源码编译成适合你当前环境的驱动,内核,动态库文件或应用. 为什么还要编译源码? linux的发行版多的要死,不能针对每一个发行版都搞一个给你直接装. 源码是什么? ...
  • u011011827
  • u011011827
  • 2016年12月18日 17:45
  • 602

Linux命令汇总

这是一份收集Unix/Linux/BSD命令和任务的文档,它有助于高级用户或IT工作。它是一份简明扼要的实用指南,当然读者应该知道他/她在干什么。 Unix Toolbox 版本:12 你...
  • u013920085
  • u013920085
  • 2016年04月12日 13:47
  • 1916

MIPS体系结构--指令集

mips体系结构下的汇编指令 指令集是存储在CPU内部,对CPU运算进行指导和优化的硬程序。拥有这些指令集,CPU就可以更高效地运行。 Mips汇编语言的风格 汇编语言指令格式 [...
  • u011037149
  • u011037149
  • 2016年04月02日 18:36
  • 7968

MIPS 架构体系基础知识

一: MIPS寄存器别名记忆: 这一段在学习MIPSCPU架构,一直对mips的32个寄存器的 约定俗成的别名感到迷惑,今天在系统计算机研究所的网 (http://www.xtrj.org/)上...
  • xyfabcde
  • xyfabcde
  • 2017年04月21日 10:10
  • 685
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:libiconv交叉移植
举报原因:
原因补充:

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