2011-11-10 143 views
0

我試圖將多個軟件包安裝到初始RAM文件系統中。我使用uclibc作爲我的C庫。這可能是一個愚蠢的問題,但...在初始RAM文件系統上從源安裝軟件包

編譯的程序是否還需要一個C庫安裝到initramfs

我的想法是,當一個程序從源代碼編譯,它被編譯成某種可執行文件? initramfs上的應用程序是否已準備好運行,只要我有make install ed(使用正確的前綴並提供相關性)?

回答

1

編譯的程序是否需要C庫或任何類型的庫,取決於它是什麼linked

一般來說,如果你的程序連接了statically那麼它沒有任何外部依賴 - 它只需要一個工作內核。它所依賴的任何庫的可執行代碼將被合併到最終的可執行文件中。

另一方面,如果鏈接dynamically,那麼它仍然需要它依賴的庫的shared object文件。在Linux上,大多數庫共享對象(也稱爲共享庫)遵循具有.so擴展名或通常爲*.so.*格式的文件名的約定。例如,/lib/libssl3.so/lib/libncurses.so.5.9都是我係統上的共享庫。

也可以有一個可執行文件,它與一些庫靜態鏈接,並與其他庫進行動態鏈接。發生這種情況的一種常見情況是罕見或專有庫靜態鏈接,而標準系統庫動態鏈接。

+0

絕妙的答案。幫了我很多,非常感謝!最後一個問題,如果你不介意..共享對象文件機器是獨立的嗎?例如,如果我的實時分發在架構上與我的主機相同,那麼我可以將共享目標文件複製到哪裏?再次感謝 – Xleedos