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

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   成功鸟~!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值