免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1100 | 回复: 0
打印 上一主题 下一主题

让linux系统的开发板支持中文的两种方法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-21 08:41 |只看该作者 |倒序浏览
一、我实验过的一种方法:
  如果是裸奔的系统,可以将汉字库以数组的形式存入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] >

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP