『壹』 請問我有一個.so文件,如何在Linux下編程使用呢
-lxx
xx是你的.so文件名
其實使用方法和你使用數學庫函數是一樣的,源代碼中添加
#include <math.h>,編譯的時候,加上-lm參數。
註:linux下的.so文件為共享庫,相當於windows下的dll文件。
linux下編寫調用so文件實例
.so是Linux(Unix)下的動態鏈接庫. 和.dll類似.
比如:
文件有: a.c, b.c, c.c
gcc -c a.c
gcc -c b.c
gcc -c c.c
gcc -shared libXXX.so a.o b.o c.o
要使用的話也很簡單. 比如編譯d.c, 使用到libXXX.so中的函數, libXXX.so地址是MYPATH
gcc d.c -o d -LMYPATH -lXXX
注意不是-llibXXX
test.c文件和一個test.h,這兩個文件要生成libsotest.so文件。然後我還有一個testso.c文件,在這個文件裡面調用libsotest.so中的函數。
編寫的過程中,首先是編譯so文件,我沒有編寫makefile文件,而是參考的2裡面說的直接寫的gcc命令。
因為so文件裡面沒有main函數,所以是不可執行的,所以編譯的時候要加上-c,只生成目標文件。
『貳』 Ubuntu靜態庫怎麼使用
-供參考
linux 靜態庫的生成與使用
1、windows系統包括靜態鏈接庫(*.lib文件)和動態鏈接庫(*.dll文件)。
2、linux通常把庫文件存放在/usr/lib或/lib目錄下。
linux庫文件名:前綴lib、庫名和後綴3部分組成,其中動態鏈接庫以.so作為後綴,靜態鏈接庫通常以.a作為後綴。
區別:
靜態鏈接庫的代碼在編譯時就拷貝到應用程序中,這樣的優點是節省編譯時間動態庫是程序在開始運行後調用庫函數時才被載入。
靜態庫的創建和使用
1、在一個頭文件中聲明靜態庫所導出的函數。
2、在一個源文件中實現靜態庫所導出的函數。
3、編譯源文件,生成可執行代碼(.o文件)
4、將可執行代碼所在的目標文件加入到某個靜態庫中,並將靜態庫拷貝到系統默認的存放文件的目錄下。
例如:mylib.h聲明函數, mylib.c實現函數
1、編譯mylib.c生成目標文件:gcc -o mylib.o -c mylib.c
2、將目標文件加入到靜態庫中:ar rcs libmylib.a mylib.o
3、將靜態庫到linux的庫目錄 (/usr/lib 或者 /lib)下:
cp libmylib.a /usr/lib/libmylib.a
4、在調用庫函數的文件中添加#include "mylib.h"這樣就可調用靜態庫中函數
5、使用靜態庫編譯:gcc -o main main.c -l mylib
注意:編譯時無需帶上前綴和後綴。這就是為什麼在使用libxml2時librareis(-l)設置為:xml2
-梁兆鈴