❶ linux下用交叉編譯器編譯報錯缺少Libc.so.6【求教】
#打開/etc/ld.so.conf,在最後一行添加/home/xassassin/armlinuxdev/bin/lib/
$sudovim/etc/ld.so.conf
#執行此命令,然後再編譯
$sudoldconfig
❷ Linux開發必知內容整理 | libc、glibc和glib的關系
在進行Linux開發不可避免的要調用一些系統的API,我們經常開到的概念有諸如glibc、libc和glib等等。那麼這些系統庫之前的關系是什麼樣的呢?下面我帶大家了解一下這些庫之前的共同點和差異,希望對以後的編程開發提供幫助。
glibc 和 libc 都是 Linux 下的C函數庫。libc是Linux下的ANSI C函數庫;glibc 是 Linux 下的 GUN C函數庫。
那麼ANSI C和GNU C有什麼區別呢?
ANSI C函數庫是基本的C語言函數庫,包含了C語言最基本的庫函數。這個庫可以根據頭文件劃分為 15 個部分,其中包括:
GNU C函數庫是一種類似於第三方插件的東西。由於 Linux 是用C語言寫的,所以Linux的一些操作是用C語言實現的。因此,GUN 組織開發了一個 C 語言的庫以便讓我們更好的利用 C 語言開發基於 Linux 操作系統的程序。不過現在的不同的 Linux 的發行版本對這兩個函數庫有不同的處理方法,有的可能已經集成在同一個庫里了。
查看當前系統的 glibc 版本的方法:
通過執行libc.so.6
切換到libc.so.6所在的目錄,執行如下命令。
執行ldd命令
錯誤觀點: GLib 前面有個"g",所以認為glib是GNU的東東;同時認為glibc是 GLib 的一個子集。其實,glib和glibc 基本上沒有太大聯系,可能唯一的共同點就是,其都是C編程需要調用的庫而已。
GLib 是Gtk+庫和Gnome的基礎。 GLib 是一個跨平台的、用C語言編寫的五個底層庫的集合,為GNOME所使用。其支持的平台包括Linux、Unix和Windows 等。 GLib 為許多標準的、常用的C語言結構提供了相應的替代物。GLib中包含了近二十種實用功能,從簡單的字元處理到初學者很難理解的XML解析功能。
官方說明
關於Glib的官方說明:
關於Glibc的官方說明
libc 實際上是一個泛指。凡是符合實現了C標准規定的內容,都是一種 libc 。
glibc是GNU組織對libc的一種實現。它是unix/linux的根基之一。
微軟也有自己的libc實現,叫msvcrt 。
嵌入式行業里還常用uClibc ,是一個迷你版的libc 。
❸ linux下如何安裝libc6
sudo apt-get install libc6
❹ Linux libc.so.6問題
目測像是在x86_64上安裝i386的軟體。
安裝命令是什麼?是不是下載的rpm包安裝的。
❺ linux下如何強制更新
linux有很多版本的
主要分:長期支持。和。滾動更新兩大類
長期支持的。就類似win7很久更新一次。注重穩定性(測試安全再提供更新)
滾動更新。類似win10,幾天就升級一次,安全些,但是呢,bug多多。
建議選擇一個最新的長期更新版本。(4-5年的支持)
比如ubuntu 20.10是最新的,但只支持幾個月。
而ubuntu20.04最近已經繼承了20.10的全部新功能。但是會支持4年更新。
❻ 修改libc.so.6導致系統命令都不能用
操作如圖:修改了軟鏈接導致系統大部分命令不能使用
解決方法1:ldconfig -l -v /lib64/libc-2.12.so
解決方法2:
libc.so.6被破壞的修復方法:
在每條命令前加上 LD_PRELOAD=/lib64/libc-2.12.so 前綴,不能使用的命令可以重新使用。例如 LD_PRELOAD=/lib64/libc-2.12.so ls,ls命令可以重新使用。刪除lib64下被破壞libc.so.6文件,再使用LD_PRELOAD=/lib64/libc-2.12.so ln -s /lib64/libc-2.12.so /lib64/libc.so.6,問題解決。
libc.so.6被刪除的修復方法:
LD_PRELOAD=/lib64/libc-2.12.so ln -s /lib64/libc-2.12.so /lib64/libc.so.6
#############################################
libc.so.6介紹:
libc.so.6是glibc的軟鏈接,glibc是gnu發布的libc庫,即c運行庫。glibc是linux系統中最底層的api,幾乎其它任何運行庫都會依賴於glibc,所以說絕大部分操作命令都缺少不了它。如果誤刪或破壞了libc.so.6,大部分系統命令將無法執行,ssh登錄系統也不成功,只會無休止的提示以下錯誤:
error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
這種情況下,大部分命令已經不能執行了,只能執行例如cd,echo等小部分命令,而實用的cp,mv則不可用,如果想解決,記得ssh一定不要斷開,如果ssh已斷開則無法重新連接上,得使用另外的方法用光碟重啟進入急救模式!!!
在同版本系統上查看/lib/libc.so.6得知是屬於libc-2.12.so的軟鏈接,因此,libc-2.12.so文件肯定還是存在的,誤刪的只是軟鏈接而已,但此時想用ln命令重新建立軟鏈接是失敗的,但是可以這樣強制設置變數就能執行成功!
LD_PRELOAD=/lib/libc-2.12.so ln -s /lib/libc-2.12.so /lib/libc.so.6
斜體加粗部分為glibc臨時指定的庫,這樣正確執行後libc.so.6就正確恢復了。
glibc是一個非常底層的庫,bash也依賴它,所以,如果把這個庫幹掉了,基本上啥事都幹不了了,但是為啥前面設置一下LD_PRELOAD變數 就可以了呢?是這樣的,LD_PRELOAD可以影響程序的運行時的鏈接(Runtime linker), 它允許你定義在程序運行前優先載入的動態鏈接庫,之前把libc.so.6這個軟連接給幹掉了,所以系統找不到這個庫了,但是通過LD_PRELOAD設置一下glibc這個庫的真實地址就可以解決這個問題了。