在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操...