如果你試著在Linux系統(tǒng)里面輸入中文,那么將會(huì)有一片亂碼呈現(xiàn)在你面前,這是因?yàn)長(zhǎng)inux系統(tǒng)的默認(rèn)語言是英文。但是如果可以顯示中文的話,那么在使用過程中的便利程度一定會(huì)大大提升。今天小編就通過飛凌嵌入式的OKA40i-C開發(fā)板來為大家演示讓Linux系統(tǒng)顯示中文的修改方法。
STEP 1 如果之前使用的是全源碼編譯方式對(duì)源碼進(jìn)行編譯處理的,就可以直接往下走;如果之前有更改過源碼部分,且使用的是單步編譯,則需要重新解壓一份OKA40i-C開發(fā)板的源碼,進(jìn)入該源碼的lichee文件夾,執(zhí)行sudo ./build.sh進(jìn)行一次全編譯,耗時(shí)會(huì)有點(diǎn)長(zhǎng),需要耐心的等待。
STEP 2 在新的源碼全編譯的過程中,到之前使用的源碼里面做一些準(zhǔn)備工作吧;要是更改過程中遇到只讀等權(quán)限問題,打開的時(shí)候加上sudo就好了。
01. 首先在lichee下面找到linux-3.10/.config這個(gè)配置文件,將里面的iso8859-1全部替換成utf8,就像下面這樣,一共有兩處。行前面的“-”表示去掉,“+”表示添加上。
FAT使用的默認(rèn)輸入/輸出字符集: -CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +CONFIG_FAT_DEFAULT_IOCHARSET="utf8"
![]()
掛載文件系統(tǒng)時(shí)使用的默認(rèn)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文件,打開.vimrc文件,在里面添加上三行命令: set fileencodings=utf-8,gb2312,gbk,gb18030 set termencoding=utf-8 set encoding=utf8
![]()
STEP 3 現(xiàn)在,新的源碼已經(jīng)全部編譯完成了,在新源碼的里面找到busybox-1.25.1這個(gè)文件夾。進(jìn)入以下路徑: lichee/out/sun8iw11p1/linux/common/buildroot/build/busybox-1.25.1
01. 執(zhí)行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的可執(zhí)行文件,將這個(gè)叫busybox的可執(zhí)行文件替換到需要中文源碼的相同路徑下面—— lichee/out/sun8iw11p1/linux/common/buildroot/target/bin里面。
![]()
STEP 4 最后,在需要中文的那一份源碼里面進(jìn)行內(nèi)核編譯,打包文件系統(tǒng),打包鏡像操作,再將鏡像燒錄到OKA40i-C開發(fā)板里面就可以顯示中文了。 sudo ./build.sh -m kernel sudo ./build.sh -m pack_rootfs sudo ./build.sh pack
最后我們來驗(yàn)證一下。可以看到此時(shí)已經(jīng)可以直接進(jìn)行中文輸入了,并且和windows對(duì)接的中文文件可以直接顯示查看。
![]()
![]()
結(jié)語 Linux系統(tǒng)中文顯示的更改其實(shí)就是更改內(nèi)核的字符集和打開busybox的顯示封鎖,第一次編譯好后,以后需要中文的busybox可以直接使用這次的busybox進(jìn)行替換,節(jié)省了很多的工作量。更改完成之后就可以在OKA40i-C開發(fā)板的Linux系統(tǒng)上面編輯和查看中文了。
|