Linux庫多重依賴

2022-07-20 10:12:06 字數 2453 閱讀 8539

原始檔:

//

world.cpp

#include void world(void

)

//

hello.cpp

#include void world(void

);void hello(void

)

//

test.cpp

void hello(void

);int main(void

)

一、動態庫多重依賴(1)編譯word動態庫

g++ -shared -fpic world.cpp -o libworld.so

(2)編譯hello動態庫

g++ -shared -fpic hello.cpp -o libhello.so

ldd libhello.so

檢視libhello.so的依賴庫,沒有看到依賴libword.so

再次檢視libhello.so的依賴庫,看到了依賴庫libword.so

上圖顯示libworld.so not found,如果臨時增加鏈結動態庫的路徑,輸入如下命令

export ld_library_path=./

ldd libhello.so

檢視libhello.so的依賴庫,顯示了依賴庫libword.so的路徑

先清除鏈結動態庫路徑

export ld_library_path=

(3)編譯可執行檔案test

g++ test.cpp -o a.out -l ./ -lhello

提示找不到libhello.so的依賴庫libworld.so,即使編譯libhello.so時已經指定了libworld.so,這點和windows不一樣

編譯通過,得到可執行檔案a.out,執行成功

二、動態庫靜態庫多重依賴

(1)編譯word靜態庫

g++ -c world.cpp

ar -cr libworld.a world.o

(2)編譯hello動態庫

編譯報錯,因為world也必須使用-fpic,重新編譯

(3)編譯可執行檔案

三、靜態庫多重依賴

(1)編譯world靜態庫

g++ -c world.cpp

ar -cr libworld.a world.o

(2)編譯hello靜態庫

g++ -c hello.cpp

ar -cr libhello.a hello.o

(3)編譯可執行檔案

因為靜態庫的依賴有順序,被呼叫庫應該放在呼叫庫後面,動態庫沒有依賴順序,正確輸入如下

g++ test.cpp -o a.out -l ./ -lhello -lworld

(4)靜態庫包含靜態庫

Linux 檢視動態庫依賴

檢視動態庫依賴3種方法 1 ldd bin grep linux gate.so.1 0xffffe000 libc.so.6 lib libc.so.6 0xb7eca000 lib ld linux.so.2 0xb801e000 2 ld trace loaded objects 1 bin ...

安裝依賴庫的方法 linux

前言 使用linux系統的過程中,專案可能需要用到各種依賴庫或者工具包,本文對庫或者包的安裝方法進行概述。具體方法 如何安裝各種依賴庫或者工具包 1 直接使用apt get install進行安裝,這樣能夠正確安裝的前提是系統中有源鏈結的檔案,在 etc apt source.list檔案中 3 一...

庫依賴總結

每個專案都或多或少的對第三方庫有依賴關係,但如何把握多少這個度一直是我認為比較棘手的問題。依賴少了,有種閉門造車,從輪子開始的感覺 而依賴多了,又會陷入專案構建,bug查詢,庫穩定性等諸多的問題。本文根據自己在c 專案方面的心得做點總結 依賴原則 a.依賴越少越好 c.依賴穩定的庫,可以通過版本號判...