linux動態庫多層級呼叫

2021-07-09 13:15:24 字數 325 閱讀 5201

這是乙個小知識點,今天拿出來說說。我們有乙個應用test,它呼叫了乙個動態庫so1.so,而這個so1.so又呼叫了so2.so。

so1.so的編譯命令列gcc -o so2.so -lso1 -lrt -lstdc++

test的編譯命令列gcc -o test -lso1 -lrt -lstdc++會報錯,說是在so1.so中找不到一些介面定義,而這些介面定義是在so2.so中實現的。

正確的編譯命令列是gcc -o test -lso1 -lso2 -lrt -lstdc++,也就是說雖然so2只是被test間接呼叫,但鏈結器會順著藤一直摸下去,如果摸到哪根藤下面沒有瓜,就報錯。

Linux 動態庫的顯示呼叫

分類 動態庫與靜態庫 2012 03 17 23 56 1710人閱讀收藏 舉報 linux null library 測試web服務 apache 10.動態庫的顯式呼叫 庫函式dlopen 將開啟乙個新庫,並把它裝入記憶體。該函式主要用來載入庫中的符號,這些符號在編譯的時候是不知道的。比如apa...

linux編譯動態庫與呼叫

動態庫是乙個包含可由多個程式同時使用的 和資料的庫,動態庫不是可執行檔案。動態鏈結提供了一種方法,使程序可以呼叫不屬於其可執行 的函式。函式的可執行 位於乙個 動態庫 中,該 動態庫 包含乙個或多個已被編譯 鏈結並與使用它們的程序分開儲存的函式。動態庫 還有助於共享資料和資源。多個應用程式可同時訪問...

c 動態庫多層動態載入的問題

問題描述 今有第三方庫曰xplico,將xplico.c中的main函式改寫成xplico main然後修改makefile,將之由可執行程式改造成動態庫libxplico.so 然後編寫測試程式test.cpp 與libxplico.so放到同一路徑下 其內容如下 include include ...