linux下編譯動態庫並呼叫

2021-10-09 18:43:14 字數 681 閱讀 7897

目錄結構如下:

root@ubuntu:/home/aaa/maketest# ls -l

total 12

-rw-r--r-- 1 root root 127 sep 24 19:09 main.cpp

-rw-r--r-- 1 root root 99 sep 24 19:18 test.cpp

-rw-r--r-- 1 root root 28 sep 24 19:11 test.h

將test.cpp編譯為目標檔案,注意比編譯靜態庫時多了-fpic引數。

g++ -fpic -c test.cpp
將 test.o檔案編譯為動態庫檔案。

g++ -shared -o libtest.so test.o
生成可執行檔案,這步和使用靜態庫時完全一樣。

g++ -o main main.cpp -l. -ltest
需要把動態庫放在/lib或/usr/lib目錄下,或者將庫檔案所在路徑新增到ld_library_path環境變數中,不然找不到動態庫。

注意:生成和使用庫檔案時檔名必須符合規範,動態庫檔案的命令為:lib+庫名稱+.so,使用時-l選項後面只需要跟庫名即可,不需要字首lib和字尾.so,否則會報錯。

linux下編譯靜態庫並呼叫

目錄結構如下 root ubuntu home aaa maketest ls l total 12 rw r r 1 root root 127 sep 24 19 09 main.cpp rw r r 1 root root 99 sep 24 19 18 test.cpp rw r r 1 r...

linux編譯動態庫與呼叫

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

Windows下動態庫的編譯以及呼叫

1.mfc下生成動態庫 1 顯式呼叫 在.cpp檔案裡新增介面函式 1 int sum int a,intb 2 56int sub int a,intb 7 在.def檔案裡標示匯出介面 1 sum 1 2 sub 2 編譯即可生成動態庫 在.exe裡呼叫 在標頭檔案裡新增 1 pragma co...