2013-10-30 55 views
4

我的問題是Linux內核是否包含libc.so.6?在google搜索並通過不同的鏈接後,我們發現libc.so.6不是Linux內核的一部分,因爲內核具有相同的庫,可以在內核空間中自行使用。 libc.so.6是一個用戶空間庫。但是,仍然存在這個問題,如果從「/ lib」中刪除了libc.so.6,則會崩潰,因爲Linux的所有基本應用程序都會崩潰。相關Linux內核libc.so.6的的

所以,留在基本問題上:

  1. 可以不libc.so.6 Linux上運行?如果是,在哪裏使用這種實施?
  2. 誰提供libc.so.6?它是否僅由Linux發行版提供?
  3. Linux內部是否支持線程?
+4

這是不是說每一個編程問題,這更是一個架構問題 – bizzehdee

+0

@bizzehdee:也許,我不這麼認爲,因爲堆棧溢出不是唯一的編程查詢。它可能是爲概念性的問題,因爲在這裏它的glibc的相關性在linux – pRAShANT

+0

stackoverflow是一個編程問題的網站... http://stackoverflow.com/help/on-topic。你可能想嘗試其他stackEXCHANGE網站之一,如http://askubuntu.com/ http://serverfault.com/或http://unix.stackexchange.com/ – bizzehdee

回答

4
  1. 是的。例如,我可以編寫一個不使用libc的程序集。以下是一些示例:https://stackoverflow.com/questions/284797/hello-world-in-less-than-20-bytes
  2. 在Linux上,glibc是libc的常見實現:https://www.gnu.org/software/libc/
  3. 是的。 glibc提供的線程選項是內核接口上的勻場層。
+0

但問題是,沒有glibc的,內核會崩潰,給內存轉儲,並且將報告進程init不能找到庫文件在指定的路徑 – pRAShANT

+0

其次,沒有glibc,我不認爲它在任何應用程序中使用Linux作爲操作系統實際上是有用的。那麼在這種情況下,一個人可以使用固件 – pRAShANT

+0

@pRAShANT:你不同意我可以在不使用libc的情況下創建應用程序嗎? –

2

Linux能否在沒有libc.so.6的情況下運行?如果是的話,這是什麼情況?

編譯與選項-nostdlib將不會使用標準庫的代碼,

GCC告訴,

-nostdlib 不要使用標準系統啓動文件或鏈接時庫。沒有 啓動文件,只有您指定的庫將傳遞給鏈接器。 編譯器可能會生成對memcmp,memset,memcpy和memmove的調用。這些 條目通常由libc中的條目解析。這些入口點應該是 通過其他機制提供,當這個選項被指定時。

檢查webpage以獲得良好的glibc免費實現。

+0

那麼在這種情況下,它不需要glibc來運行應用程序,並且在這種情況下啓動Linux時,它不會崩潰?它會繼續進行正常的登錄和shell提示嗎? – pRAShANT