2010-12-13 134 views
0

我正在建立一個需要動態鏈接到我的項目的庫。輸出是一個.so文件,所以我認爲我在正確的軌道上。我對它在編譯時被鏈接的方式感到擔憂 - 通過指定它的makefile的位置以及取決於一堆我以前從未遇到過的宏。可能靜態鏈接共享對象庫?

我可以假設,因爲我建立一個.so庫(而不是.a),我實際上是動態鏈接的嗎?或者有可能.so庫是靜態鏈接的,在這種情況下,我需要翻譯make/config文件以更好地理解發生了什麼?

感謝,

安德魯

回答

0

我不熟悉的可執行文件和共享對象的內部結構,所以我只能提供一些實用的提示。這樣ld(被稱爲gcc),使共享對象,而不是可執行的二進制 -

假設你使用gcc,應該鏈接目標文件時到圖書館有-shared選項。

gcc -shared -o libabc.so *.o ... 

當您使用此libabc.so應該沒有錯誤鏈接,之後與ldd命令,你應該能夠看到libabc.so其依賴關係間的鏈接某些應用。

$ ldd app 
    ... 
    libabc.so => ...............