Вам не нужно анализировать /etc/ld.so.conf или любой из файлов конфигурации - если вы запустите 'ldconfig', он будет сканировать настроенные каталоги и сгенерирует файл кэша.
Затем, когда вы попытаетесь выполнить dlopen, он автоматически найдет файлы, просматривая каталоги из кэшированной библиотеки. То же самое с компиляцией и передачей -lSomeLib, вам не нужно указывать -L / my / other / path, если вы настроили его в ld.so.conf (.d)
autoconf выполняет это, пытаясь скомпилировать тестовую программу, которая ссылается на общую библиотеку, но это всего лишь функциональная оболочка для вызова dlopen ().
Таким образом, хотя другие методы не обязательно являются «неправильными», корень их в том, что попытка связаться с библиотекой или выполнение dlopen () - это «самый правильный» способ сделать это.
Учтите это, если вы попытаетесь связаться с библиотекой в каталоге, который НЕ кешируется в /etc/ld.so.cache, при попытке запустить программу она потерпит неудачу, потому что она не сможет dlopen () библиотека!
Следовательно, любая «хорошая» разделяемая библиотека будет находиться в /etc/ld.so.cache и иметь возможность linkable / dlopen (), это означает, что gcc может использовать ее для ссылки, а пользовательская библиотека или исполняемый файл будут быть в состоянии открыть это, когда это выполняет.
Вы можете обойти это, явно установив переменную окружения LD_LIBRARY_PATH или LD_PRELOAD_PATH - но у каждого из них есть свои предостережения, и их следует избегать, если возможно, для «стандартного» использования.
Хорошая статья о написании разделяемых библиотек охватывает некоторые из этих проблем и хороша для тех, кто работает над программным использованием других совместно используемых библиотек. Ульрих Дреппер. Как писать общие библиотеки .