当前位置:首页 > 创业科技 > 正文

Linux动态链接库连接 *** 详解,让你轻松掌握动态链接库使用 ***

2. 编写程序

3. 编译程序

4. 运行程序

创建一个名为“libadd.so”的文件,并将以下代码保存到该文件中

include

include

extern "C" __attribute__ ((visibility ("default")))

int add(int a, int b)

return a + b;

2. 编写程序

创建一个名为“main.cpp”的文件,并将以下代码保存到该文件中

include

include

include

int main()

void handle;

int (add)(int,int);

char error;

handle = dlopen("./libadd.so", RTLD_LZY);

if (!handle) {

fputs (dlerror(), stderr);

exit(1);

}

dlerror();

add = (int ()(int,int)) dlsym(handle, "add");

if ((error = dlerror()) != NULL) {

fputs(error, stderr);

exit(1);

}

printf("%d\n", add(1,2));

dlclose(handle);

return 0;

3. 编译程序

使用以下命令编译程序

g++ -o main main.cpp -ldl

4. 运行程序

使用以下命令运行程序

./main

输出结果为

gcc -fPIC -shared -o libtest.so test.c

其中,-fPIC选项表示生成位置无关代码,-shared选项表示生成共享库,-o选项表示指定输出文件名。

gcc -o test test.c -L. -ltest

gcc -o test test.c -Wl,-rpath,. -ltest

3. 运行可执行文件

export LD_LIBRRY_PTH=$LD_LIBRRY_PTH.

其中,.表示当前目录。

gcc -o test test.c -L. -ltest.so.1

gcc -o test test.c -Wl,-rpath,. -ltest.so.1

ldd libtest.so