Linker
“ld”和“ld.so”之間的區別?
雖然兩者都被稱為“連結器”並用於連結二進製文件,但我無法真正弄清楚它們之間的區別。誰能告訴我他們的區別?
無需太技術性:兩者都是“連結器”,即將一段編譯程式碼與另一段編譯程式碼組合/載入的工具。
ld
是靜態連結器,ld.so
而是動態連結器。我相信這些字母
so
是“共享對象”的縮寫,您通常會將其視為共享庫的文件名後綴,即可以動態連結到程序中的庫(一個庫在多個程序之間“共享”) . 相反,靜態庫通常具有文件名後綴.a
,表示“存檔”(由ar
實用程序創建)。靜態連結器在編譯時連結程序或庫,通常作為編譯過程的最後一步,創建二進制執行檔或庫。在二進制執行檔的情況下,它可能是一個靜態二進製文件,所有庫都載入到二進製文件本身中,或者它可能是一個動態連結的二進製文件,只有一些庫靜態連結。
動態連結器將在編譯時動態連結的庫載入到執行時程序的地址空間中。
請參閱您的系統的
ld
手冊ld.so
。