您的位置:首页 > 运维架构 > Linux

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

2013-08-16 17:08 120 查看
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 成功鸟~!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: