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