Каталог Lib в 64-битном дистрибутиве OpenSuse - PullRequest
5 голосов
/ 12 февраля 2012

В проекте, над которым я работаю, используется нестандартная система распространения, которая загружает и компилирует библиотеки зависимостей. Этот крок запускает для каждой библиотеки сценарий configure с префиксом внутреннего каталога системы компиляции. Затем он запускает make и make install, затем проверяет содержимое путем поиска в каталоге установки с файлом lib/<mylib>.a. Этот последний шаг не удался.

Пытаясь понять, что происходит, я собрал пару случайных библиотек, включая одну, автором которой я являюсь. Я заметил, что в моем дистрибутиве (openSUSE, 64 bit) путь установки не заполнен /lib, а вместо /lib64.

Понятно, что это настройка дистрибутива, и я уверен, что этот параметр касается конфигурации autotools , поставляемой с дистрибутивом.

Есть ли способ изменить это поведение или, в качестве альтернативы, прочитать эту информацию из системы (чтобы я мог исправить вышеупомянутый черепок)?

Спасибо за вашу помощь

Обновление: Я узнал о флаге --libdir в configure, поэтому думаю, что смогу решить мою проблему. Тем не менее, я хотел бы знать, есть ли способ узнать эту деталь из каких-либо запросов к дистрибутиву (например, прочитать какой-нибудь файл конфигурации).

Ответы [ 2 ]

5 голосов
/ 14 февраля 2012

Сценарий конфигурирования никогда не должен пытаться делать предположения о машине или пытаться устанавливать библиотеки в каталогах, отличных от $ {exec_prefix} / lib, если пользователь явно не запрашивает другое местоположение для $ libdir. Один механизм, с помощью которого пользователь может явно запросить альтернативное местоположение, - через файл config.site. Если файл $ {prefix} /share/config.site существует, он может указывать альтернативное значение для $ libdir, в результате чего пользователь по незнанию явно указывает альтернативное место установки.

3 голосов
/ 19 декабря 2012

Это хороший ответ Уильяма Перселла.Я просто хотел добавить, поскольку этот вопрос конкретно касается openSUSE, что openSUSE не устанавливает файл с именем config.site.Эквивалентный файл фактически устанавливается в /usr/share/site через site-config об / мин, а затем активируется через /etc/profile/site.{c,}sh, который экспортирует переменную среды CONFIG_SITE, чтобы указать на этот файл.Тогда эта переменная учитывается autoconf , как вы, возможно, уже видели.

...