У меня есть определенная библиотека общих объектов в специальной директории, которую я
- убедитесь, что специальный каталог находится в $ LD_LIBRARY_PATH
- убедитесь, что этот каталог имеет разрешения на чтение и выполнение для всех
- убедитесь, что соответствующий каталог библиотеки находится в ld.so.conf и что root выполнил ldconfig
(проверьте, проверив библиотеку, используя ldconfig -p в качестве normaluser.
- убедитесь, что у него нет проблем с сонами (т. Е. Создайте несколько символических ссылок при необходимости)
Теперь, скажем, я скомпилировал программу, которая нуждается в этой специальной библиотеке, программу, упакованную типичным способом с открытым исходным кодом, который ./configure && make и т. Д.), И он говорит, что -lspecialibrary не может быть найден, ошибка, из-за отсутствия какой-либо из вышеперечисленных проверок также, вероятно, выбросить.
Обходной путь, который я сделал, - это символическая ссылка на библиотеку / usr / local / lib64, и внезапно в библиотеке обнаружен ben. Также при компиляции относительно простого пакета я вручную добавляю -L / path / в / spec / lib, и это тоже сработало. Но я расцениваю эти два метода как хаки, поэтому я искал какие-либо подсказки о том, почему мой список проверок недостаточно хорош для поиска библиотеки.
(я особенно нахожу $ LD_LIBRARY_PATH поверхностного использования. Фактически я могу исключить из него определенные библиотеки, и они все равно будут найдены в процессе компиляции).