嵌入式爱好者

嵌入式爱好者 门户 知识库 查看内容

linux命令行显示中文

2018-5-25 10:14| 发布者: Marss| 查看: 681| 评论: 0

类目:  >  知识库     文档编号: 187

这里介绍利用busybox文件系统,命令行显示汉字的方法。

1. 官网下载busybox.net压缩包到虚拟机,修改根文件系统:busybox-1.20.2

a. 解压busybox-1.20.2.tar.gz.

#tar zxvf busybox-1.20.2.tar.gz

b. 进入解压之后的busybox-1.20.2文件夹。

c. #make defconfig 默认配置。

d. #make menuconfig 出现图形界面选择编译进busybox的功能选项。

 Busybox Settings  --->Build Options  ---> (/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-none-linux-gnueabi-) Cross Compiler prefix (具体交叉编译器路径按自己所放目录修改即可)

Busybox Settings  --->General Configuration  --->[*] Don't use /usr这样在安装的时候会安装到自己指定的目录(default ./_install).这个选项一定要选。否则make install busybox将安装在原系统的/usr下,这将覆盖掉系统原有的命令。选择这个之后,make install后会在busybox目录下生成_install的目录。里面有busybox和指向它的链接。

e. busybox 中添加 locale support 支持 Busybox Settings  --->      General Configuration  --->    [*] Enable locale support (system needs locale for this to work)                   

[*] Support Unicode

[*]   Use libc routines for Unicode (else uses internal ones)  

并把(63)  Character code to substitute unprintable characters with 修改为(65533Character code to substitute unprintable characters with

(767) Range of supported Unicode characters 修改为(195102Range of supported Unicode characters

为什么是195102? 中文在Unicode中的位置查了一下最高到U+2FA1D,随便给这个值改了一个大于2FA1D(195101)的值.

f. 其他选线擦用默认配置,一路 Exit,最后保存,yes.

g. 修改busybox源码目录下的./libbb/printable_string.c先找到这样一段:

  if (c < ' ')

 break;

   if (c >= 0x7f)

  break;

  s++;

注释掉某两行(34,35):

/* if (c >= 0x7f) */

/* break; */

 然后找这样一段(48):

    unsigned char c = *d;

    if (c == '\0')

break;

 if (c < ' ' || c >= 0x7f)

     *d = '?';

   d++;

if (c < ' ' || c >= 0x7f)  改成   if (c < ' ')  

 修改。/libbb/ unicode.c先找到这样一段:static char* FAST_FUNC unicode_conv_to_printable2()

*d++ = (c >= ' ' && c < 0x7f) ? c : '?';修改为(1002行)

*d++ = (c >= ' '/* && c < 0x7f*/) ? c : '?';

if (c < ' '/* || c >= 0x7f*/) 修改为(1010行)if (c < ' ' || c >= 0x7f)

 h编译、安装

make

make install (由于前面没设置安装位置将默认安装在本文件夹的_install文件夹下)

        i. busybox-1.20.2/busybox替换rootfs/bin/busybox.package生成rootfs.tar.bz2.

2. 修改内核

a. 在终端里面执行以下命令,验证交叉编译器安装是否成功。

#arm-fsl-linux-gnueabi-gcc –v

 

a.首先按手册复制linux_imx6ul_config文件为.configcp linux_imx6ul_config .config

b.#make menuconfig

b. #make zImage 

3. 替换sd卡烧写工具system下的rootfs.tar.bz2 zImage

4. 烧写。在sd卡下创建修改.txt和系统.txt

5. 如果启动之后,也可以挂载sd卡。

mount -t vfat -o codepage=936,iocharset=utf8  /dev/mmcblk0p1 /home

6. 查看SD卡内容

#ls la  /media/mmcblk0p1

7.在终端输入#vi 测试.txt

输入“正在测试”保存退出。

使用ls 命令查看。发现多了测试.txt。使用命令cat 测试.txt查看其中内容为“正在测试”。注意:在window下输入汉字为GB2312。在linux终端查看时,为utf-8。故txt文本中内容必须为utf-8的输入方式。可在linux环境下输入汉字到txt文档中,在嵌入式开发板上查看其内容。


已解决

未解决

只是看看

最新评论

QQ|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )

GMT+8, 2024-11-26 03:55

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

返回顶部