原始檔:
//world.cpp
#include void world(void
)
//hello.cpp
#include void world(void
);void hello(void
)
//一、動態庫多重依賴(1)編譯word動態庫test.cpp
void hello(void
);int main(void
)
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.依賴穩定的庫,可以通過版本號判...