Автоинструменты - выбор версий библиотеки для связи с - PullRequest
1 голос
/ 08 августа 2010

У меня есть проект, который ссылается на libssl.so, и я сталкиваюсь с ошибкой в ​​libssl, и никогда в версиях lib это не исправляется.Однако в системе, в которой я работаю, у меня нет учетной записи root, поэтому я сам создал libssl и предварительные требования под $HOME/opt.

Теперь, когда я делаю:

./configure --prefix=`$HOME/opt`
make

система сборки все еще использует более старую общесистемную версию libssl.

Я пытаюсь найти правильный способ "взломать" автоинструменты для связи с скомпилированными библиотеками.

Ответы [ 3 ]

3 голосов
/ 08 августа 2010

Я не уверен, но, возможно, вам также следует добавить новый путь к PKG_CONFIG_PATH. То есть, если ваш проект использует PKG_CHECK_MODULES для поиска libssl.

2 голосов
/ 08 августа 2010

Всегда есть ./configure LDFLAGS=-L$HOME/opt/lib CPPFLAGS=-I$HOME/opt/include. Но этот метод глобально использует заголовки из этого префикса и глобально связывается с расположенными там библиотеками. Многие проекты предоставляют AC_ARG_WITH s для настройки путей, например

AC_ARG_WITH([ssl], ...)

или

AC_ARG_WITH([ssl-prefix], ...)
AC_ARG_WITH([ssl-libs], ...)
AC_ARG_WITH([ssl-includes], ...)

по аналогии с autoconf --x-includes и --x-libraries

Но я думаю, это вопрос личного вкуса.

Просто заметил, что вы не хотите изменять свои файлы, в этом случае вы можете просто добавить соответствующую библиотеку в переменную LIBS или использовать rpath:

./configure LIBS="$HOME/opt/lib/libssl.so.x.y.z"

или

./configure LDFLAGS="-Wl,-rpath,$HOME/opt/lib/"
0 голосов
/ 08 августа 2010

Кажется, что:

LDFLAGS="-L$HOME/opt/lib" ../configure --prefix="$HOME/opt"

заставляет автоинструменты сначала $HOME/opt/lib . Если кто-нибудь знает лучше или более общий ответ, я все еще уши.

...