linux指定动态库路径

linux指定动态库路径

通常有两种方法:

1.把动态库放到系统库或者在系统库中做一个链接,这样编译和运行都会去系统库找。这样容易引起系统库混乱。

2.export LD_LIBRARY_PATH=###。指定库搜索路径,但是这样注销再登陆就没了。


还有第三种方法,编译时使用-Wl,-rpath,-Wl,路径

这样就能把路径编译到可执行文件里,但是这样只能在本地使用,拿到其他地方就需要把库和路径也拷贝过去才行。但是这在调试我们程序时还是非常实用的,特别是在系统库里存在同一库的不同版本时。


下面是我写的一个小例子:

#vim libtest.c

#include <stdio.h>

int add_fun(int a,int b)
{
    return a+b;
}


#gcc -fPIC -shared -o libtest.so libtest.c 
#vim main.c


#include <stdio.h>
int main()
{
    int a,b,sum;
    a = 1028;
    b = 23409;
    sum = sum_fun(a,b);
    printf("sum = %d\n",sum);
    return 0;
}

#gcc main.c -o main.o -Wl,-rpath,-Wl /home/hb/test/lib/libtest.so


 # ldd main.o
    linux-gate.so.1 =>  (0x00b0c000)
    /home/hb/test/test/lib/libtest.so (0x00eae000)
    libc.so.6 => /lib/libc.so.6 (0x005cc000)
    /lib/ld-linux.so.2 (0x004b7000)
这时可以看到,libtest.so的路径直接写进了可执行文件
这样执行时就不会去系统库里找找个文件了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值