ldconfig 命令

 

 

    你是否在 linux 系统上,运行程序的时候,遭遇过如下的提示信息:

 

    error while loading shared libraries: lib*.so.*: cannot open shared object file: No such file or directory

 

    这个提示信息的含义是系统找不到库文件lib*.so.*。系统默认查找库文件的目录是 /lib 和 /usr/lib 以及 /etc/ld.so.conf 文件中列出的目录和 /etc/ld.so.conf.d 目录下各.conf文件所列出的目录。ldconfig 的作用,就是在这些目录下,搜索出可共享的动态链接库(格式如 lib*.so.*,例 libcudart.so.4),进而创建出动态装入程序(ld.so)所需的连接和缓存文件。

 

    1. 如果往 /lib 和 /usr/lib 里面加入库文件,是不用修改 /etc/ld.so.conf 的,但是加入后要 root 用户执行一下 ldconfig 命令;

 

    2. 如果库文件加入到  /lib 和 /usr/lib 以外的目录,那么要修改 /etc/ld.so.conf 文件或者在 /etc/ld.so.conf.d 目录下新建一个.conf 文件,然后再调用ldconfig。

 

    例如:cuda 安装的是 5.5 版本,但是程序执行的时候要用到 libcudart.so.4,我们把 libcudart.so.4 文件放到 /home/tester/K20test 目录下,那么我们修改 /etc/ld.so.conf 文件,增加一行,内容为:“/home/test/K20test“即可。或者在  /etc/ld.so.conf.d 目录下新建文件 cudart4.conf,内容同样为:“/home/test/K20test“。然后一定记得执行 ldconfig。

 

    3. 如果想在这两个目录以外放文件,但是又不想在/etc/ld.so.conf中加内容(或者是没有权限加内容),那么需要设定环境变量LD_LIBRARY_PATH,一般来讲这只是一种临时的解决方案,在没有权限或临时需要的时候使用。

 

    如上例,vi ~/.bashrc,增加如下内容:

    LD_LIBRARY_PATH=/home/tester/K20test:$LD_LIBRARY_PATH

    然后 source ~/.bashrc

 

 

    特别提醒: ldconfig 做的这些操作都与运行程序有关,跟编译程序一点关系都没有。编译的时候还是该加 -L 就得加,不要混淆了。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值