如果你試著(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系統上面編輯和查看中文了。
|