linux下構建 共享函式庫( so)

2021-08-25 12:13:39 字數 802 閱讀 5954

在linux上用c建立共享庫so

1、建立math1.c,在命令列中輸入:nano math1. c

int add(int x, int y)

2、編譯生成共享庫libmath1.so

gcc -fpic -shared -olibmath1.so math1.c

3、建立測試程式testmath.c,在命令列中輸入:nano testmath. c

#include

int main()

4、編譯生成測試程式testmath

gcc -otestmath -lmath1 testmath.c -l=./

5、執行測試程式,在命令列中輸入:./testmath

出現找不到共享庫的錯誤:

./testmath: error while loading shared libraries: libmath1.so: cannot open shared object file: no such file or directory

6、拷貝libmath1.so到linux系統預設的共享庫載入路徑(/lib或/usr/lib)

在命令列中輸入:sudo cp libmath1.so /usr/lib/

7、重新執行測試程式testmath

結果:10+18=28

關於gcc的編譯引數:

-fpic 生成與位置無關的**,這樣庫就可以在任何位置被連線和裝載

-shared 代表共享庫

-o 鏈結生成指定名字的庫或程式

-l 指定要鏈結的共享庫

-l 指定共享庫所在路徑

linux下構建 靜態函式庫 a

一.靜態庫構建 1.定義兩個函式檔案 say.c include void say char arg write.c include void write char arg 2.編譯這兩個檔案 gcc c say.c write.c 產生say.o write.o c作用是阻止編譯器建立乙個完整的程...

Linux 共享函式庫的管理

共享函式庫分為靜態鏈結庫和動態鏈結庫。靜態鏈結的好處,是程式被搬移到另乙個同質系統而不必重新編譯,就可順利執行 缺點是它們的體積比較龐大,需要較多記憶體。動態鏈結庫的優缺點剛好與靜態鏈結庫互補,所浪費記憶體較少 特別是同時執行多個動態鏈結的程式且它們共享許多通用函式時 但是如果將檔案搬移到另乙個系統...

Linux 下的靜態(函式)庫 動態(函式)庫

不用指定生成.o檔名 預設生成file1.o,file2.o,file3.o ar rv libname.a file1.o file2.o file3.or 將flie1.o,file2,o,file3.o插入archive,如故原先archive中已經存在某檔案,則先將該檔案刪除。v 顯示ar操...