Я не понимаю. Обычно я устанавливаю стороннее программное обеспечение в / 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), в котором есть запись для / usr / local / lib в / etc / ld.so.conf.d / libc.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 по умолчанию? Может быть, там что-то не так.