《LinuxFromScratch》第三部分:構建LFS系統第六章:安裝基本的系統軟體-6.20.Ncurses-5.9

行者武松發表於2017-11-08

             Ncurses 軟體包包含用於不依賴於特定終端的字元螢幕處理的庫。

大概編譯時間:
0.5 SBU
需要磁碟空間:
54 MB

6.20.1. 安裝 Ncurses

準備編譯 Ncurses:

./configure --prefix=/usr           
            --mandir=/usr/share/man 
            --with-shared           
            --without-debug         
            --enable-pc-files       
            --enable-widec

新配置選項的含義:

--enable-widec

這個選項會編譯寬字元庫(例如 libncursesw.so.5.9)而不是常規的)例如 libncurses.so.5.9)。寬字元庫可用於多位元組和傳統的 8 位本地字元,
而常規的庫只能用於 8 位本地字元。寬字元庫和常規的庫是原始檔相容的,而不是二進位制檔案相容的。

--enable-pc-files

該選項為 pkg-config 生成和安裝 .pc 檔案。

編譯軟體包:

make

該軟體包有個測試套件,但只能在安裝完軟體包後執行。測試程式在 test/ 目錄中。檢視該目錄中的 README 檔案獲取更詳細資訊。

安裝軟體包:

make install

移動共享庫到期望的 /lib 資料夾:

mv -v /usr/lib/libncursesw.so.5* /lib

由於庫已經被移走了,符號連結指向了一個不存在的檔案。重建符號連結:

ln -sfv ../../lib/$(readlink /usr/lib/libncursesw.so) /usr/lib/libncursesw.so

很多應用程式仍然希望編輯器能找到非寬字元的 Ncurses 庫。通過符號連結和連結器指令碼欺騙這樣的應用連結到寬字元庫:

for lib in ncurses form panel menu ; do
    rm -vf                    /usr/lib/lib${lib}.so
    echo "INPUT(-l${lib}w)" > /usr/lib/lib${lib}.so
    ln -sfv lib${lib}w.a      /usr/lib/lib${lib}.a
    ln -sfv ${lib}w.pc        /usr/lib/pkgconfig/${lib}.pc
done

ln -sfv libncurses++w.a /usr/lib/libncurses++.a

最後,確保在編譯時會查詢 -lcurses 的舊應用程式仍然可以編譯:

rm -vf                     /usr/lib/libcursesw.so
echo "INPUT(-lncursesw)" > /usr/lib/libcursesw.so
ln -sfv libncurses.so      /usr/lib/libcurses.so
ln -sfv libncursesw.a      /usr/lib/libcursesw.a
ln -sfv libncurses.a       /usr/lib/libcurses.a

如果需要的話,安裝 Ncurses 的幫助文件:

mkdir -v       /usr/share/doc/ncurses-5.9
cp -v -R doc/* /usr/share/doc/ncurses-5.9
[Note]

注意

上面的指令並不會建立非寬字元 Ncurses 庫,因為沒有從原始檔中編譯安裝的軟體包會在執行時連結它們。如果你由於一些僅有二進位制的應用程式或要和 LSB 相容而必須要有這樣的庫,用下面的命令重新編譯軟體包:

make distclean
./configure --prefix=/usr    
            --with-shared    
            --without-normal 
            --without-debug  
            --without-cxx-binding
make sources libs
cp -av lib/lib*.so.5* /usr/lib

6.20.2. Ncurses 軟體包內容

安裝的程式:
captoinfo (連結到 tic), clear, infocmp,
infotocap (連結到 tic), ncursesw5-config, reset (連結到
tset), tabs, tic, toe, tput, and tset
安裝的庫:
libcursesw.{a,so} (到 libncursesw.{a,so} 的符號連結和連結器指令碼), libformw.{a,so},
libmenuw.{a,so}, libncurses++w.a, libncursesw.{a,so},
libpanelw.{a,so}, 以及庫名稱中沒有 “w” 的對應的非寬字元部分
安裝目錄:
/usr/share/tabset, /usr/share/terminfo,
和 /usr/share/doc/ncurses-5.9

簡要介紹

captoinfo

轉換 termcap 描述為 terminfo 描述

clear

如果可以的話清空螢幕

infocmp

比較或輸出 terminfo 描述

infotocap

轉換 terminfo 描述為 termcap 描述

ncursesw5-config

為 ncurses 提供配置資訊

reset

重新初始化終端為預設設定

tabs

清空終端並設定製表符長度

tic

將 terminfo 檔案從原始檔格式轉換到二進位制格式的 terminfo 條目描述編譯器需要 ncurses 例程 [terminfo 檔案包含特定終端的功能資訊]

toe

列出所有可用的終端型別,給出每個主名稱和描述

tput

可以在 shell 中使用終端特定的功能值;也可用來重置或初始化終端或者報告它的完整名稱

tset

可以用來初始化終端

libcursesw

libncursesw 的連結。

libncursesw

包含在一個終端螢幕以多種複雜方式顯示文字的函式;使用這些功能的一個好的例子是核心 make
menuconfig
時的選單顯示

libformw

包含實現表單的函式

libmenuw

包含實現選單的函式

libpanelw

包含實現皮膚的函式


相關文章