EDA365电子论坛网

标题: 只需4步,让全志A40i开发板的Linux系统拥有中文显示 [打印本页]

作者: 罗罗诺亚    时间: 2023-3-4 16:05
标题: 只需4步,让全志A40i开发板的Linux系统拥有中文显示
如果你试着在Linux系统里面输入中文,那么将会有一片乱码呈现在你面前,这是因为Linux系统的默认语言是英文。但是如果可以显示中文的话,那么在使用过程中的便利程度一定会大大提升。今天小编就通过飞凌嵌入式的OKA40i-C开发板来为大家演示让Linux系统显示中文的修改方法。
% U, N( R7 u& U5 N  I8 G! S

STEP 1

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

  h/ \5 }0 x  P2 C

STEP 2

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

- r: I# R/ t5 b5 e( U% S, l

01.

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

* N$ I. S$ E8 z( v( A: z

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

-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"

+CONFIG_FAT_DEFAULT_IOCHARSET="utf8"


! a, F! j- C( A, l8 U
6 q+ I4 k& I6 ^. ?/ x
  W! J; q& U7 t6 x+ _5 W: }4 E; l
) p1 ]$ k3 a! w! Z) M! h

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

-CONFIG_NLS_DEFAULT=" iso8859-1"

+CONFIG_NLS_DEFAULT="utf8"

5 D) d$ U2 W7 [

2 \5 D4 j5 A+ T7 V* y+ m" I3 x
; D: Q" z( o% C

; ]4 ^0 F% N4 C$ O3 m

02.

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

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


. _! b1 h5 E; ~
: {! j* A( _* A/ X/ b4 _
* y+ D7 d. f2 ^) v3 A

( D- f6 x1 z: n0 j, |5 R

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


+ @5 z5 W5 i" K( _  [
+ C' B8 ~& k# f
. y9 i7 d+ O, [, i/ w7 C0 n5 r2 l" `
+ t" o3 e5 s1 \" v

STEP 3

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

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

5 F% ]) k: G7 o- d: @

01.

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

6 H2 n- _* L, G3 W, d

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


    5 _$ F0 n& P8 D1 P: W6 g6 U/ k" y7 w% @. r+ r0 h7 x7 w

    % t% h! g9 l0 M
    9 U3 i& B5 {. C# W/ |' n# Z& A2 |

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

    ( I+ |+ l% {8 F

    02.

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

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


    8 r/ m1 e/ f8 I8 \
    6 t9 J8 k2 H3 E4 k
    8 h$ r9 B# x( e" d- H3 j

    将这里更改为

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

    +if (c < ' ')


    9 @& \6 G  _5 d; x: ~0 g- D$ D6 Q. X9 V" h

    , @4 A+ ^* `8 `4 F8 j. s
    " |% j! s( `4 R' c. r4 F4 B, V

    03.

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

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

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


    8 \+ c2 V. {9 i$ D/ i

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

    修改为if (c < ' ')

    $ Z# b. {* u5 a! C: M- [

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

    * s+ f4 H+ l2 M5 k

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

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

    % c$ d4 ]3 p% ~+ \2 m( K9 T7 a

    * g" O+ ^* i( @1 ?
    ; c8 v: `! i5 }" @3 B
    / O" j/ d  Y, c" w
    ) ^: t1 U$ v, K; K

    STEP 4

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

    sudo ./build.sh -m kernel

    sudo ./build.sh -m pack_rootfs

    sudo ./build.sh pack

    6 w1 H! ?' m& `, [+ n6 J

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


    " V7 c% g/ r, T; P4 m4 y% X
    ' _0 s+ T# c9 y7 M" H; `$ w' t) O. Y8 T  W! f* \3 V
    ! {4 P  t6 b7 r8 y2 i+ @% u1 a
    " O% ?1 K# X/ }) f7 u
    $ T, _  e, f* `8 o
    + h& d; e' y- }" H- s1 r/ O; a4 U

    结语

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

    7 b  [& q4 q' A9 f5 C( O

    作者: Dollche    时间: 2023-3-6 16:14
    在我看起来更舒服了,




    欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2