查看: 2163|回復: 0
打印 上一主題 下一主題

全志A40i開(kāi)發(fā)板Linux系統如何顯示中文

[復制鏈接]
跳轉到指定樓層
樓主
發(fā)表于 2023-3-4 16:07:23 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
關(guān)鍵詞: 操作系統
如果你試著(zhù)在Linux系統里面輸入中文,那么將會(huì )有一片亂碼呈現在你面前,這是因為L(cháng)inux系統的默認語(yǔ)言是英文。但是如果可以顯示中文的話(huà),那么在使用過(guò)程中的便利程度一定會(huì )大大提升。今天小編就通過(guò)飛凌嵌入式的OKA40i-C開(kāi)發(fā)板來(lái)為大家演示讓Linux系統顯示中文的修改方法。

STEP 1

如果之前使用的是全源碼編譯方式對源碼進(jìn)行編譯處理的,就可以直接往下走;如果之前有更改過(guò)源碼部分,且使用的是單步編譯,則需要重新解壓一份OKA40i-C開(kāi)發(fā)板的源碼,進(jìn)入該源碼的lichee文件夾,執行sudo ./build.sh進(jìn)行一次全編譯,耗時(shí)會(huì )有點(diǎn)長(cháng),需要耐心的等待。


STEP 2

在新的源碼全編譯的過(guò)程中,到之前使用的源碼里面做一些準備工作吧;要是更改過(guò)程中遇到只讀等權限問(wèn)題,打開(kāi)的時(shí)候加上sudo就好了。


01.

首先在lichee下面找到linux-3.10/.config這個(gè)配置文件,將里面的iso8859-1全部替換成utf8,就像下面這樣,一共有兩處。行前面的“-”表示去掉,“+”表示添加上。


FAT使用的默認輸入/輸出字符集:

-CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"

+CONFIG_FAT_DEFAULT_IOCHARSET="utf8"





掛載文件系統時(shí)使用的默認NLS

-CONFIG_NLS_DEFAULT=" iso8859-1"

+CONFIG_NLS_DEFAULT="utf8"





02.

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

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





03.

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

然后到上方路徑下創(chuàng )建一個(gè).vimrc文件,打開(kāi).vimrc文件,在里面添加上三行命令:

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

set termencoding=utf-8

set encoding=utf8





STEP 3

現在,新的源碼已經(jīng)全部編譯完成了,在新源碼的里面找到busybox-1.25.1這個(gè)文件夾。進(jìn)入以下路徑:

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


01.

執行make menuconfig ARCH=arm進(jìn)入busybox的圖形化編輯界面。


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





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


    02.

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

    搜索0x7f,刪除以下兩行:




    將這里更改為

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

    +if (c < ' ')





    03.

    更改libbb/unicode.c文件,先找到這樣一段:static char* FAST_FUNC。然后將里面的1022行和1030行進(jìn)行修改:

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

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


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

    修改為if (c < ' ')


    修改完成之后,刪除.stamp_built文件和.stamp_target_installed文件,返回到lichee文件夾下面,重新進(jìn)行全編譯sudo ./build.sh操作。


    在out/sun8iw11p1/linux/common/buildroot/target/bin路徑后面會(huì )生成一個(gè)busybox的可執行文件,將這個(gè)叫busybox的可執行文件替換到需要中文源碼的相同路徑下面——

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






    STEP 4

    最后,在需要中文的那一份源碼里面進(jìn)行內核編譯,打包文件系統,打包鏡像操作,再將鏡像燒錄到OKA40i-C開(kāi)發(fā)板里面就可以顯示中文了。

    sudo ./build.sh -m kernel

    sudo ./build.sh -m pack_rootfs

    sudo ./build.sh pack


    最后我們來(lái)驗證一下?梢钥吹酱藭r(shí)已經(jīng)可以直接進(jìn)行中文輸入了,并且和windows對接的中文文件可以直接顯示查看。








    結語(yǔ)

    Linux系統中文顯示的更改其實(shí)就是更改內核的字符集和打開(kāi)busybox的顯示封鎖,第一次編譯好后,以后需要中文的busybox可以直接使用這次的busybox進(jìn)行替換,節省了很多的工作量。更改完成之后就可以在OKA40i-C開(kāi)發(fā)板的Linux系統上面編輯和查看中文了。


  • 您需要登錄后才可以回帖 登錄 | 立即注冊

    本版積分規則

    關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
    電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
    快速回復 返回頂部 返回列表
    午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页