2016-02-25 3 views
0

Я знаю, что вы можете искать определенную функцию в библиотеке с помощью AC_SEARCH_LIBS, но это только говорит вам, находится ли библиотека в пути библиотеки и удовлетворяет определенным условиям. Есть ли простой способ получить путь - или, более конкретно, префикс библиотеки, который удовлетворяет AC_SEARCH_LIBS?Найти местоположение библиотеки на диске с помощью autotools

Например, сказать, что я написал

AC_SEARCH_LIBS([dlopen],[dl],[],[]) 

это просто позволяет мне сделать что-то в зависимости от того или не нахожу библиотеку с именем дл содержащий dlopen, но он не говорит мне, где эта библиотека находится на диске.

Мне нужно сделать это, потому что для команды сборки для одной из программ, которые я обертываю, требуется префикс для библиотеки, а не только имя библиотеки.

+1

вы можете добавить вызов pkgconfig, чтобы получить путь к вашей библиотеке? – Jimmy

ответ

0

Нет стандартного способа делать то, что вы хотите, кроме pkg-config. Если библиотека вы ищете предоставляет .pc файлы, вы можете запросить для libdir переменной ее, чтобы выяснить, где файл вероятно (хотя нет никакой гарантии этого.)

PKG_CHECK_VAR([FOO_LIBDIR], [foo], [libdir]) 
AC_MSG_CHECKING([foo library path]) 
AS_IF([test "x$FOO_LIBDIR" = "x"], [ 
    AC_MSG_FAILURE([Unable to identify foo lib path.]) 
]) 

Вы можете найти больше информация о PKG_CHECK_VARon my Autotools Mythbuster.

Для системных библиотек и в общих библиотеках нет стандартного способа сделать это - в основном потому, что кросс-компиляция означает, что вы действительно не знаете, каким будет этот путь при запуске программного обеспечения.

Если вы можете предоставить более подробную информацию о том, что вы пытаетесь сделать, может быть проще найти общее решение.