Linux中的动态链接库使用记录

来源:互联网 发布:知乎 洛丽塔译本 编辑:程序博客网 时间:2024/06/04 19:30

1.首先创建了一个文件shareTest.c

#include <stdio.h>void Say(){        printf("Say Hello\n");}void Look(){        printf("Look at me\n");}void Hear(){        printf("Hear a song\n");}

2.编译为so文件gcc -shared -fPIC -o libshareTest.so shareTest.c,fPIC的意思是与地址无关代码

这样就出现了 libshareTest.so


3.编辑一个文件test.c

#include <stdio.h>int main(){               int a;        int b = 0;        char c;        char d = 'a';        printf("Hello\n");        Say();        Look();}

4.编译:gcc test.c -o test -L/home/zxx/experiment/ -lshareTest

5.运行:./test,出错,提示错误为 error while loading shared libraries: libshareTest.so: cannot open shared object file: No such file or directory

6.分析原因,虽然编译的时候指定了动态链接库的路径,但是在运行的时候,系统又去/usr/lib寻找 libshareTest.so,因此我们还要指定运行时动态链接库路径

4.2编译:gcc test.c -o test -L/home/zxx/experiment/ -Wl,-rpath,/home/zxx/experiment/ -lshareTest

5.2运行:./test   成功鸟~!

原创粉丝点击