next up previous
Next: 訊息自動轉碼的機制 Up: Glibc-2.2 Previous: glibc-2.1.X 的簡短回顧

不一樣的檔案目錄配置

然而,在 glibc-2.2 已經不一樣了。其 locale 的資料現在分成兩個部分來放, 一個是與硬體平台有關的資料,如 LC_CTYPELC_TIME ...等, 是放在

/usr/lib/locale/zh_TW.big5
而與硬體平台無關的資料,就只有 LC_MESSAGES 目錄及底下的訊息翻譯檔 而已,是放在
/usr/share/locale/zh_TW
的目錄下。這是為了能夠符合 FHS (Filesystem Hierarchy Standard,
http://www.pathname.com/fhs/) 的檔案目錄結構標準。簡而言之,該標準 的定義是希望將與硬體平台有關和無關的檔案資料分開來放,使無關的部分可以分 享出來,讓其他電腦使用。

先說明為什麼會有與硬體平台有關的部分。所謂與硬體有關的資料,是指同一份資 料檔,在不同的硬體平台下讀取時可能會讀出不同的內容,即使這些硬體平台使用相 同的作業系統,跑相同的程式。主要的原因有兩個,一個是不同的硬體平台其 CPU 內定的整數的位元數不同,例如一般的個人電腦是 32 位元,而高階的工作站則多 半是 64 位元。另一個原因是不同類的 CPU,其整數的高位元在整個位元組的位置 可能不同,有可能是在最左邊,也有可能是在最右邊,也就是所謂位元序的問題。 因此即使同樣是 32 位元的機器,其在讀取一個位元組序列時,讀出來的結果可能 會不同。這一點我們在前幾期的文章中,在討論寬字元不能用於程式輸出,只能用 於程式內部運作時,有提到過。

在過去的 glibc-2.1.X 系統中,所有的 locale 資料都是與硬體平台無關的,因為 這些 locale 資料原始檔中,其字元定義都是以多位元組 (multi-byte) 的型態存 在,故經編譯後的資料檔都是以一個位元組 (byte,即 8 個 bits) 為單位來儲存的, 在所有的平台下都可以讀出相同的結果。 然而在 glibc-2.2,其 locale 資料中的字元定義全部都改以寬字元來儲存, 然而寬字元是不適於程式輸出的,因為它與硬體平台有關。故這部分資料就必須確保只 能在同一部機器下使用,因此它們才被移到 /usr/lib/locale 的目錄下。而 與硬體平台無關的,可以讓其他機器分享使用的資料,就只剩 LC_MESSAGES 而已,故還是放在 /usr/share/locale 底下。



Tung-Han Hsieh 2000-10-16