今天早上本來打算研究一下dup2函式的實現,以驗證檔案描述符相關的模型,但是通過gdb除錯起來後發現跳轉到了「/sysdeps/unix/syscall-template.s」檔案,很明顯這是系統呼叫的模板檔案,之前咱們研究過的fork函式還有一定的特殊性(是通過arch_fork巨集跳轉到系統呼叫),所以今天就把glibc編譯安裝一下,嚐嚐鹹淡。
1. ./configure
一般這類軟體的安裝,都是三步驟
./configure 根據機器的特點,對檔案進行一些配置。
./make 編譯、鏈結生成可執行檔案。
./make install 把編譯好的檔案複製到指定的資料夾下,一般這一步需要許可權。
好,先來進行第一步,直接執行「./configure」,結果出現以下錯誤:
configure: error: you must configure in a separate build directory
通過查詢資料發現:「不能在glibc當前目錄下執行configure」,所以將上述命令改為:
mkdir glibc-2.21-build
mkdir glibc-2.21-install
cd glibc-2.21-build
../glibc-2.21/configure --prefix=../glibc-2.21-install
結果又出現如下錯誤:
configure: error: expected an absolute directory name for --prefix: ../glibc-2.21-install
*** these critical programs are missing or too old: gawk
*** check the install file for required versions.
機器上沒裝gawk,先裝上再試試:
*** these auxiliary programs are missing or incompatible versions: makeinfo
*** some features will be disabled.
*** check the install file for required versions.
checking ld_library_path variable... contains current directory
configure: error:
*** ld_library_path shouldn't contain the current directory when
*** building glibc. please change the environment variable
*** and run configure again.
錯誤乙個接著乙個,第乙個問題比較簡單,不過注意此處要安裝texinfo,直接安裝makeinfo是沒有的。
再來看第二個問題,這裡比較尷尬,錯誤提示是ld_library_path包含有當前資料夾。但我的qt是安裝在home資料夾下的,所以解決這個問題當前有兩套方案,第一是把ld_library_path臨時設為空;第二種方案是先把ld_library_path永久設為空,安裝完畢後再改回來。
先來試試第一種方案,命令如下:
export ld_library_path=
好,問題得到解決。
2. 執行make
這一步沒什麼說的,直接執行make就行了,不過執行時間比較長。
就出現了乙個錯誤,可能連錯誤都不算:
*** errlist.c count 134 inflated to glibc_2.12 count 135 (old errno.h?)
不影響make的執行,就先不管了。
3. 執行make install
以為執行到了這一步,幸福和快樂就應該是結局了,結果出現以下錯誤:
make[2]: *** no rule to make target 'libc.texinfo', needed by '/home/andywang/glibc-2.21-build/manual/libc.info'. stop.
make[1]: *** [manual/subdir_install] error 2
make: *** [install] error 2
又上網查了查,結果不得了啊,第二步貌似應該執行make all,好了把所有東西刪了重來吧,試試make all結果如何。
make all還是出現上述警告,不過我看了一下,這部分是在裝manual。其他需要的/bin、/include、/lib應該是都裝好了(不過我也不確定)。
好,安裝glibc的過程就先給大家分享到這裡。
glibc的安裝編譯
有些軟體可能要求系統的 glibc 高於某個版本才可以正常執行。如果您的 glibc 低於要求的版本,為了執行這些軟體,您就不得不公升級您的 glibc 了 您可以尋找已經編譯好的 rpm 包或者使用源 的方式公升級 glibc。解壓 tar zxvf glibc 2.7.tar.gz cd gli...
Glibc 安裝指南
glibc 安裝指南 適用於2.3 2.4 2.5 2.6 2.7 編譯前的預備知識與要點提示 glibc 2.3.6 建議使用 gcc 4.0 編譯,glibc 2.4 2.5 建議使用 gcc 4.1 編譯,glibc 2.6 2.7 建議使用 gcc 4.2 編譯。所有這些版本最低要求使用 g...
Linux manjaro 安裝glibc指定版本
檢視現在系統的glibc版本 strings lib64 libc.so.6 grep glibc 直接安裝最新版 sudo pacman s glibc lib32 glibc force安裝glibc 2.19版本 wget edu cn gnu libc glibc 2.19 tar xz 解...