当前位置:  开发笔记 > 编程语言 > 正文

找不到/ usr/local/lib中的共享库

如何解决《找不到/usr/local/lib中的共享库》经验,为你挑选了1个好方法。

我不明白.我通常将第三方软件安装到/ usr/local中,因此库安装在/ usr/local/lib中,并且从未遇到过链接到这些库的问题.但现在它突然不再有效:

$ gcc -lkaytils -o test test.c
/usr/bin/ld.gold.real: error: cannot find -lkaytils
/usr/bin/ld.gold.real: /tmp/ccXwCkYk.o: in function main:test.c(.text+0x15):
error: undefined reference to 'strCreate'
collect2: ld returned 1 exit status

当我添加参数而-L/usr/local/lib不是它的工作但我从来没有必须使用它.找到/ usr/local/include中的头文件而不添加-I/usr/local/include.

我正在使用Debian GNU/Linux 6(Squeeze),默认情况下在/etc/ld.so.conf.d/libc.conf中/ usr/local/lib条目,ldconfig缓存知道库我是试图使用:

k@vincent:~$ ldconfig -p | grep kaytils
        libkaytils.so.0 (libc6,x86-64) => /usr/local/lib/libkaytils.so.0
        libkaytils.so (libc6,x86-64) => /usr/local/lib/libkaytils.so

那么到底是怎么回事?我在哪里可以检查默认情况下通过gcc搜索哪些库路径?也许那里出了点问题.



1> Yann Vernier..:

gcc -print-search-dirs将告诉您编译器检查的路径./ usr/local/lib根本就不在其中,所以你的编译时链接器(在这种情况下是来自binutils的新黄金ld)在动态的时候找不到库(ld-linux.so读取由ldconfig).据推测,您之前已经完成的构建在其makefile中添加了-L/usr/local/lib(通常由./configure脚本完成),或者您安装了二进制文件.


找到了.我的系统安装了binutils-gold软件包.不知道为什么binutils搜索/ usr/local/lib和binutils-gold没有,但是现在我不在乎.删除包修复了问题.我接受你的回答是因为你告诉我我正在使用binutils-gold.
推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有