嵌入式软件工程师&&太极拳
全部博文(548)
分类:
2012-04-11 11:57:36
原文地址:让linux系统的开发板支持中文的两种方法 作者:teaco77
要在开发板的文件系统中安装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] >