【发布时间】:2011-05-03 17:48:34
【问题描述】:
我不明白。我通常将第三方软件安装到 /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 中有一个 /usr/local/lib 条目。 conf 默认情况下,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 默认搜索哪些库路径?也许那里有问题。
【问题讨论】: