glibc編譯安裝


glibc是gnu發布的libc庫,即c運行庫。glibc是linux系統中最底層的api,幾乎其它任何運行庫都會依賴於glibc。glibc除了封裝linux操作系統所提供的系統服務外,它本身也提供了許多其它一些必要功能服務的實現。

wget https://kojipkgs.fedoraproject.org//packages/glibc/2.30.9000/1.fc32/src/glibc-2.30.9000-1.fc32.src.rpm

../configure

make && make install

【Makeconfig:42: *** missing separator. Stop.】【configure: error: you must configure in a separate build directory】解決辦法:

  新建一個目錄,然后進入該目錄,用絕對路徑編譯。(一般在解壓目錄新建 ./glibc_build)

【configure: error:

*** These critical programs are missing or too old: compiler

】解決:

更新 gcc

 

*** On GNU/Linux systems the GNU C Library should not be installed into
*** /usr/local since this might make your system totally unusable.
*** We strongly advise to use a different prefix.  For details read the FAQ.
*** If you really mean to do this, run configure again using the extra
*** parameter `--disable-sanity-checks'.

出現這個錯誤的原因在於,如果沒指定prefix,則系統把這個程序裝在/usr/local目錄下。但是,c標准庫要求必須安裝在與根文件系統相同的分區中,否則不能用。但是/usr這個掛載點可能處在外部的分區。

解決方法就是指定prefix到/usr,這時候configure程序會自動把必須的內容裝在/lib下(這個目錄肯定與根目錄同分區),擴展內容再裝到/usr/lib下。

【rm -rf /lib64/libc.so.6后出現

ln -s /lib64/libc-2.14.so /lib64/libc.so.6

l error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory

當出現上面的狀況時候,可以使用以下方法解決(假設libc-2.14.so已經拷貝到/lib64/目錄下,“LD_PRELOAD”是一個環境變量,定義在程序運行前優先加載的動態鏈接庫。):

LD_PRELOAD=/lib64/libc-2.14.so ln -s /lib64/libc-2.14.so /lib64/libc.so.6
當然如果升級失敗,還可以使用下面命令還原至系統升級前的版本libc-2.12.so:

LD_PRELOAD=/lib64/libc-2.12.so ln -s /lib64/libc-2.12.so /lib64/libc.so.6

或者可以安裝到其他目錄:

../configure  --prefix=/opt/glibc

然后通過環境變量來指定glibc

export LD_PRELOAD=/opt/glibc/libc-2.14.so

export LD_LIBRARY_PATH=/opt/glibc/lib


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM