我試圖將多個軟件包安裝到初始RAM文件系統中。我使用uclibc作爲我的C庫。這可能是一個愚蠢的問題,但...在初始RAM文件系統上從源安裝軟件包
編譯的程序是否還需要一個C庫安裝到initramfs
?
我的想法是,當一個程序從源代碼編譯,它被編譯成某種可執行文件? initramfs
上的應用程序是否已準備好運行,只要我有make install
ed(使用正確的前綴並提供相關性)?
我試圖將多個軟件包安裝到初始RAM文件系統中。我使用uclibc作爲我的C庫。這可能是一個愚蠢的問題,但...在初始RAM文件系統上從源安裝軟件包
編譯的程序是否還需要一個C庫安裝到initramfs
?
我的想法是,當一個程序從源代碼編譯,它被編譯成某種可執行文件? initramfs
上的應用程序是否已準備好運行,只要我有make install
ed(使用正確的前綴並提供相關性)?
編譯的程序是否需要C庫或任何類型的庫,取決於它是什麼linked。
一般來說,如果你的程序連接了statically那麼它沒有任何外部依賴 - 它只需要一個工作內核。它所依賴的任何庫的可執行代碼將被合併到最終的可執行文件中。
另一方面,如果鏈接dynamically,那麼它仍然需要它依賴的庫的shared object文件。在Linux上,大多數庫共享對象(也稱爲共享庫)遵循具有.so
擴展名或通常爲*.so.*
格式的文件名的約定。例如,/lib/libssl3.so
和/lib/libncurses.so.5.9
都是我係統上的共享庫。
也可以有一個可執行文件,它與一些庫靜態鏈接,並與其他庫進行動態鏈接。發生這種情況的一種常見情況是罕見或專有庫靜態鏈接,而標準系統庫動態鏈接。
絕妙的答案。幫了我很多,非常感謝!最後一個問題,如果你不介意..共享對象文件機器是獨立的嗎?例如,如果我的實時分發在架構上與我的主機相同,那麼我可以將共享目標文件複製到哪裏?再次感謝 – Xleedos