主题 : 如何交叉编译libiconv?? 复制链接 | 浏览器收藏 | 打印
级别: 侠客
UID: 26755
精华: 0
发帖: 101
金钱: 505 两
威望: 101 点
综合积分: 202 分
注册时间: 2010-08-13
最后登录: 2017-09-13
楼主  发表于: 2010-11-23 18:03

 如何交叉编译libiconv??

    我交叉编译的方法如下 /configure  --host=arm-linux --enable-shared  --enable-static --prefix=/usr/local/arm/4.3.2/arm-linux
然后写的测试例子如下:
  #include <stdio.h>
#include <iconv.h>
#include <stdlib.h>
#include <stdarg.h>
#include <string.h>
#include <malloc.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <time.h>
int code_convert(char *from_charset,char *to_charset,char *inbuf,int inlen,char *outbuf,int outlen)    
{
iconv_t cd;
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;
}
int u2g(char *inbuf,int inlen,char *outbuf,int outlen)   //UNICODE码转为GB2312码
{
return code_convert("utf-8","gb2312",inbuf,inlen,outbuf,outlen);
}
int g2u(char *inbuf,size_t inlen,char *outbuf,size_t outlen)  //GB2312码转为UNICODE码
{
return code_convert("gb2312","utf-8",inbuf,inlen,outbuf,outlen);
}

int main()
{
  unsigned char in_utf8[] = {0x20,0xe8,0xbf,0x99,0xe6,0x98,0xaf,0xe4,0xb8,0x80,0xe4,0xb8,0xaa,0x69,0x63,0x6f,0x6e,0x76,0xe7,0x9a,0x84,0xe6,0xb5,0x8b,0xe8,0xaf,0x95,0xe4,0xbe,0x8b,0xe7,0xa8,0x8b,0xef,0xbc,0x9a,0xa,0xe2,0x80,0x9c,0xe7,0xba,0xb5,0xe6,0xb5,0xb7,0xe6,0x9d,0xaf,0xe2,0x80,0x9d,0xe4,0xb8,0x9c,0xe5,0x8d,0x97,0xe5,0xa4,0xa7,0xe5,0xad,0xa6,0xe7,0xac,0xac,0xe4,0xb8,0x89,0xe5,0xb1,0x8a,0xe5,0xb5,0x8c,0xe5,0x85,0xa5,0xe5,0xbc,0x8f,0xe7,0xb3,0xbb,0xe7,0xbb,0x9f,0xe8,0xae,0xbe,0xe8,0xae,0xa1,0xe9,0x82,0x80,0xe8,0xaf,0xb7,0xe8,0xb5,0x9b};    //UTF-8编码
char out[100];
int rc;
rc = u2g(in_utf8,strlen(in_utf8),out,100);
printf("ddddddd%s\n",out);
char uOut[100],inG[100];
char *p="utf-8编码的问题\n";
printf("pppp:%s\n",p);
sprintf(inG,"%s",p);
  rc=g2u(inG,16,uOut,100);
printf("utf-8 %s\n",uOut);

}
编译方法如下: arm-linux-gcc -o word wordtest.c -libconv
报如下错误:
/usr/local/arm/4.3.2/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.2/../../../../arm-none-linux-gnueabi/bin/ld: cannot find -libconv
级别: 侠客
UID: 26755
精华: 0
发帖: 101
金钱: 505 两
威望: 101 点
综合积分: 202 分
注册时间: 2010-08-13
最后登录: 2017-09-13
1楼  发表于: 2010-11-24 07:32
浏览的人多,怎吗没人回答??
级别: 侠客
UID: 26755
精华: 0
发帖: 101
金钱: 505 两
威望: 101 点
综合积分: 202 分
注册时间: 2010-08-13
最后登录: 2017-09-13
2楼  发表于: 2010-11-24 10:45
有没有人顶一下
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
3楼  发表于: 2010-11-24 17:03
我交叉编译的方法如下 /configure  --host=arm-linux --enable-shared  --enable-static --prefix=/usr/local/arm/4.3.2/arm-linux

你交叉编译出来的libiconv.so在什么地方?
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."