嵌入式爱好者

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

93命令行显示中文

2024-7-29 08:50| 发布者: bpf1| 查看: 29| 评论: 0

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

1.修改busybox-1.35.0源码

下载源码后进入源码目录,busybox源码下载路径https://busybox.net/

保留默认配置

forlinx@ubuntu:~$ make defconfig  

进行图形界面编辑

forlinx@ubuntu:~$ make menuconfig

出现图形界面选择编译进busybox的功能选项。

Settings  --->[*] Don't use /usr

找到此选项按空格键切换状态,*built-in

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

Settings--->(aarch64-poky-linux- ) Cross Compiler prefix 

(/opt/fsl-imx-xwayland/5.15-kirkstone/sysroots/armv8a-poky-linux)path to sysroot

( -O2 -pipe -g -feliminate-unused-debug-types)Additional CFLAGS

(-Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed  -Wl,-z,relro,-z,now)Additional LDFLAGS

(具体交叉编译器路径按自己所放目录修改即可)

 

     

 

 

②在busybox 中添加支持 Settings  --->   [*] 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)的值.

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

修改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 < ' ')

 

编译、安装

forlinx@ubuntu:~$ make

移植到文件系统

复制出源码路径下的busybox

在开发板路径下将原来的备份cp /bin/busybox /bin/busyboxbak

再将复制出来的busybox考到板上 cp /run/media/sda1/busybox /bin/busybox

因为原来93ls用的是ls.coreutils所以在终端删除/bin/ls

并形成新的链接文件

ln -s /bin/busybox /bin/ls

 

2.修改内核

注:下面的CONFIG前面的“+”即为添加此行,“-”即为去掉此行。

a. 修改配置文件

修改源码路径下的配置文件arch/arm64/configs/OK-MX93_defconfig

-CONFIG_FAT_DEFAULT_CODEPAGE=437

+CONFIG_FAT_DEFAULT_CODEPAGE=936

-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"

+CONFIG_FAT_DEFAULT_IOCHARSET="utf8"

-CONFIG_NLS_DEFAULT="iso8859-1"

+CONFIG_NLS_DEFAULT="utf8"

-# CONFIG_NLS_CODEPAGE_936 is not set

+CONFIG_NLS_CODEPAGE_936=y

  -# CONFIG_NLS_UTF8 is not set

+CONFIG_NLS_UTF8=y

a. 重新编译生成Image 并替换板子里的镜像

注:编译以及烧写步骤参见手册。

3.在文件系统验证

将有含有中文名称文件夹的SD卡插到开发板上,进入U盘挂载目录,执行ls命令即可显示中文.vi打开可以显示中文:

注意:在window下输入汉字为GB2312。在linux终端查看时,为utf-8。故txt文本中内容必须为utf-8的输入方式。可在linux环境下输入汉字到txt文档中,在嵌入式开发板上查看其内容。 



已解决

未解决

只是看看

最新评论

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

GMT+8, 2024-9-17 02:49

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

返回顶部