Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1308066
  • 博文数量: 548
  • 博客积分: 7597
  • 博客等级: 少将
  • 技术积分: 4224
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-15 13:21
个人简介

嵌入式软件工程师&&太极拳

文章分类

全部博文(548)

文章存档

2014年(10)

2013年(76)

2012年(175)

2011年(287)

分类:

2012-04-11 11:57:36

一、我实验过的一种方法:
  如果是裸奔的系统,可以将汉字库以数组的形式存入ROM中或将二进制文件烧录在外存中,不会以文件的形式使用汉字库,但是对于使用了linux操作系统的开发环境来说,要使用汉字库,就直接可以读取二进制文件。
 

要在开发板的文件系统中安装iconv库:

第一步:执行如下命令

./configure CC=arm-linux-gcc --build=i686-pc-linux --target=arm-linux --host=arm-linux prefix=/usr/local/arm/4.3.2/arm-linux --enable-shared --enable-shared --enable-static

第二步:执行如下命令

make && make install

第三步:

cp /usr/local/arm/4.3.2/arm-linux/lib/libiconv.* /rootfs/lib

 

[root@localhost hznet]# make

arm-linux-gcc -o hznet hznet.c -liconv

/usr/local/arm/4.3.2/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.2/../../../../arm-none-linux-gnueabi/bin/ld: cannot find -liconv

collect2: ld returned 1 exit status

make: *** [hznet] Error 1

但是还是有以上错误

根据提示:

将编译生成的iconv,也就是刚才复制到/rootfs/lib下的库,大概有10个文件,也复制到gcc的库目录下, /usr/local/arm/4.3.2/lib/gcc/arm-none-linux-gnueabi/4.3.2,这样就编译通过了。

实现的原理是utf-8转换成gb2312,然后得到机内码,有了机内码后就是和单片机同样的处理方式,通过汉字库显示汉字。

 

二、locale方式,我没试过,转自以下BK

http://blogold.chinaunix.net/u3/90973/showart_1976075.html

拷贝工具链里的i18n目录到/usr/share下;

在 /usr/lib/下建立一个locale目录,运行 localedef  -f UTF-8 -i zh_CN zh_CN.UTF8命令。
就能在/usr/lib/locale下建立一个locale-archive文件。

用locale -a命令就能看到刚才加的文件名了。

删除掉添加的文件用: localedef  --delete-from-archive zh_CN.UTF8

localedef命令是在模默认目录/usr/share/i18n下找字符集和locale定义文件的。

~# cp i18n /us r/share
~#mkdir -p /usr/lib/locale
~#localedef -f UTF-8 -i zh_CN zh_CN.UTF8
`#locale -a

之后,还得在板子的环境变量中添加 export LANG=zh_CN.utf


详细又如:
/scratchbox/compilers/arm-linux-gcc-3.4.4-glibc-2.3.5/arm-unknown-linux-gnu/share/i18n] > cd ../
[sbox-ms007: /scratchbox/compilers/arm-linux-gcc-3.4.4-glibc-2.3.5/arm-unknown-linux-gnu/share] > cp i18n/ /usr/share/ -raf
[sbox-ms007: /scratchbox/compilers/arm-linux-gcc-3.4.4-glibc-2.3.5/arm-unknown-linux-gnu/share] > cd /usr/local/
[sbox-ms007: /usr/local] > ls
[sbox-ms007: /usr/lib] > mkdir local
[sbox-ms007: /usr/lib] > mv local locale
[sbox-ms007: /usr/lib] > localedef -f UTF-8 -i zh_CN zh_CN.UTF
[sbox-ms007: /usr/lib] > cd locale/
[sbox-ms007: /usr/lib/locale] > ls
locale-archive
[sbox-ms007: /usr/lib/locale] > locale -a
C
POSIX
zh_CN.utf
[sbox-ms007: /usr/lib/locale] > ls
locale-archive
[sbox-ms007: /usr/lib/locale] >

阅读(1382) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~