linux動態鏈結庫的建立與使用

2021-04-02 07:16:54 字數 1065 閱讀 1669

建立linux動態鏈結庫:

從void *dlsym(void *handle, char *symbol); 的引數可以看出,該函式只傳兩個引數:乙個指向so的handle和乙個函式的symbol,所以so裡面的函式應該不允許過載,否則根據乙個symbol不能確定指向那個函式。為了相容c和c++在so中定義函式時用extern "c",以下用例子說明如何建立linux動態鏈結庫so檔案。

//test.h

#ifdef __cplusplus

extern "c"

#endif

//test.c

#include

#include "mytest.h"

void mytest()

//main.cpp

#include

#include

//#include "mytest.h"

void (*pmytest)();

bool testso()

else

}pmytest = (void (*)())dlsym(phandle, "mytest");

if( (error=dlerror()) != null )

pmytest();

if( phandle != null )

dlclose(phandle);

return true;

}int main()

//makefile

all : mytest.so testso

.cpp.o :

g++ -c -g -wno-deprecated $(cflags) $<

.c.o :

gcc -c -g -shared $(cflags) $<

mytest.so : mytest.o

g++ mytest.o -g -shared -o mytest.so

testso : main.o

g++ main.o -rdynamic -s -g -wl -o testso -ldl

clean :

rm -f *.o *.so testso

解析Linux靜態與動態鏈結庫的建立和使用

首先由下面幾個函式 strlen.h strlen.c strnlen.c main.c strlen.h 標頭檔案int strnlen char pstr,unsigned long ulmaxlen int strlen char pstr strlen.c 實現給定字串的長度 include...

Linux動態鏈結庫的建立與使用

使用gnu的工具我們如何在linux下建立自己的程式函式庫?乙個 程式函式庫 簡單的說就是乙個檔案包含了一些編譯好的 和資料,這些編譯好的 和資料可以在事後供其他的程式使用。程式函式庫可以使整個程式更加模組化,更容易重新編譯,而且更方便公升級。libc.so.n n應該大於或者等於6 這是c語言函式...

建立靜態鏈結庫 動態鏈結庫

下面的實操中的動態庫或者靜態庫名都用wujunwu 第一步 建立乙個源 建立靜態鏈結庫的源 include void func1 void int func2 int x,int y 第二步 建立乙個.件作為函式宣告 void func1 void intfunc2 int x,int y 第三步 ...