找回密码
 注册
关于网站域名变更的通知
查看: 266|回复: 1
打印 上一主题 下一主题

只需4步,让全志A40i开发板的Linux系统拥有中文显示

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2023-3-4 16:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
如果你试着在Linux系统里面输入中文,那么将会有一片乱码呈现在你面前,这是因为Linux系统的默认语言是英文。但是如果可以显示中文的话,那么在使用过程中的便利程度一定会大大提升。今天小编就通过飞凌嵌入式的OKA40i-C开发板来为大家演示让Linux系统显示中文的修改方法。+ n8 a" H: {" @4 ?( G# R9 X4 h" q

STEP 1

如果之前使用的是全源码编译方式对源码进行编译处理的,就可以直接往下走;如果之前有更改过源码部分,且使用的是单步编译,则需要重新解压一份OKA40i-C开发板的源码,进入该源码的lichee文件夹,执行sudo ./build.sh进行一次全编译,耗时会有点长,需要耐心的等待。


4 G1 [* ^3 v" Z$ z, X, U1 c

STEP 2

在新的源码全编译的过程中,到之前使用的源码里面做一些准备工作吧;要是更改过程中遇到只读等权限问题,打开的时候加上sudo就好了。


' R) n% w, [2 m- u+ T

01.

首先在lichee下面找到linux-3.10/.config这个配置文件,将里面的iso8859-1全部替换成utf8,就像下面这样,一共有两处。行前面的“-”表示去掉,“+”表示添加上。

1 c* d! u! z+ t  n& F7 h, C

FAT使用的默认输入/输出字符集:

-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"

+CONFIG_FAT_DEFAULT_IOCHARSET="utf8"

. |8 N6 P2 Y+ Z  z9 ~3 a

  I. J4 B. O% ^1 Y' d% O+ Y5 t8 e4 a, P* O( u# A9 B

3 H3 q4 H4 {3 N) f. i+ `0 v% d  H

挂载文件系统时使用的默认NLS

-CONFIG_NLS_DEFAULT=" iso8859-1"

+CONFIG_NLS_DEFAULT="utf8"


( f/ L/ b8 ~& f3 t' h  E: I% [# l: T& m1 L$ T7 t- A! w8 I
( g. i+ A, L- S3 j/ X& d/ |8 ]
  r5 o+ u8 }% h  O

02.

out/sun8iw11p1/linux/common/buildroot/target/etc/inputrc

在上方lichee中的文件中添加两行命令:

8 m- h7 X* s, F) U/ D
( e$ w! \7 e; `, |/ q% N) L6 N
! c" ], a" d5 `* C  g6 ]2 P# P

/ n' G, U/ o' b4 Z

03.

lichee/out/sun8iw11p1/linux/common/buildroot/target/root

然后到上方路径下创建一个.vimrc文件,打开.vimrc文件,在里面添加上三行命令:

set fileencodings=utf-8,gb2312,gbk,gb18030

set termencoding=utf-8

set encoding=utf8

! r0 t& C$ w- Y: h5 N* {
% Q, K# T2 r: Q6 C$ r4 t

8 h; \5 u  F. u& Z7 b$ Y

8 A, ~4 V) ?; F

STEP 3

现在,新的源码已经全部编译完成了,在新源码的里面找到busybox-1.25.1这个文件夹。进入以下路径:

lichee/out/sun8iw11p1/linux/common/buildroot/build/busybox-1.25.1

4 q$ V; B% y2 l6 _. E

01.

执行make menuconfig ARCH=ARM进入busybox的图形化编辑界面。

$ \. J# ?4 V) P8 _( z1 F" n

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)

    (65533) Character code to substitute unprintable characters with

    (195102) Range of supported Unicode characters

    6 w0 o" }- Y4 I

    % c3 w: Y5 Z  y3 g& s3 M+ S4 r  D3 G' R: r3 M$ I; _7 e8 x

    . ~- q' W# p9 p% Y9 X. P" \

    更改好之后一路Exit退出,最后选择yes保存配置。


    ) R/ u1 j" W0 n9 \5 E& |- n) K

    02.

    然后更改busybox-1.25.1文件夹路径下的文件libbb / printable_string.c,

    搜索0x7f,删除以下两行:


    ; f/ p7 c/ V! g+ k. W/ I* ?. W- t3 d( q( K1 N0 u; I, s
    $ Y+ S; Q" Q0 K: i

    将这里更改为

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

    +if (c < ' ')


    ( p  q- p) p6 o8 i" q+ x* b2 Z, S( {" z( e1 g5 J3 n

    - e6 S3 r% _: i3 Y( _) \
    ! I. h8 `1 M5 ]. z( Y; H. J8 n

    03.

    更改libbb/unicode.c文件,先找到这样一段:static char* FAST_FUNC。然后将里面的1022行和1030行进行修改:

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

    修改为*d++ = (c >= ' ') ? c : '?';


    + R# X! q. X- Q6 i0 j' k# i% Y

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

    修改为if (c < ' ')


      Q, E/ g$ n* X6 B, p9 d! J  H

    修改完成之后,删除.stamp_built文件和.stamp_target_installed文件,返回到lichee文件夹下面,重新进行全编译sudo ./build.sh操作。

    : l4 v; f, c# c1 j

    在out/sun8iw11p1/linux/common/buildroot/target/bin路径后面会生成一个busybox的可执行文件,将这个叫busybox的可执行文件替换到需要中文源码的相同路径下面——

    lichee/out/sun8iw11p1/linux/common/buildroot/target/bin里面。


    8 P! b# u& m( [* j% _
    4 h( J# F0 e  @) ^2 s6 H
    ! @/ B2 O9 ?# X1 F% R) A3 `) Z
    / N5 M0 e  }/ m: [9 ]! Z
    1 X4 K% x8 N6 o1 o8 U" H4 S, }

    STEP 4

    最后,在需要中文的那一份源码里面进行内核编译,打包文件系统,打包镜像操作,再将镜像烧录到OKA40i-C开发板里面就可以显示中文了。

    sudo ./build.sh -m kernel

    sudo ./build.sh -m pack_rootfs

    sudo ./build.sh pack


    ' T; W) H8 z4 Y, F

    最后我们来验证一下。可以看到此时已经可以直接进行中文输入了,并且和windows对接的中文文件可以直接显示查看。

    0 ^  L( _0 F; j: G! r' d4 s
    + X( F; \6 g- c6 b8 ]' g+ x, W
    / |# t. i4 j$ C8 P/ v$ e: D! Z
    % g( N( |8 }; W! y% `
    . j' [7 R. s7 r- M% _: k: p) c

    + y8 L" v! O4 T
    $ ^, Z  K0 r9 F0 f/ q4 N

    结语

    Linux系统中文显示的更改其实就是更改内核的字符集和打开busybox的显示封锁,第一次编译好后,以后需要中文的busybox可以直接使用这次的busybox进行替换,节省了很多的工作量。更改完成之后就可以在OKA40i-C开发板的Linux系统上面编辑和查看中文了。

    3 c* O! X  W% p7 s; L" [
  • 该用户从未签到

    2#
    发表于 2023-3-6 16:14 | 只看该作者
    在我看起来更舒服了,
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-9-5 02:57 , Processed in 0.125000 second(s), 23 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表