Каталог lib в 64-битном дистрибутиве OpenSuse

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

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

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

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

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

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


person Dacav    schedule 12.02.2012    source источник
comment
Это не имеет ничего общего с autoconf в системе, поскольку вы не используете autoconf.   -  person William Pursell    schedule 12.02.2012
comment
@WilliamPursell: нет, но я запускаю скрипт configure. Я предполагаю, что система компиляции на основе configure может считывать некоторую конфигурацию из операционной системы (например, какой-то файл в /etc/), чтобы определить, где ОС должна найти библиотеки.   -  person Dacav    schedule 13.02.2012
comment
Если скрипт configure ищет в /etc/, это ошибка в пакете. Я никогда не видел поведения, которое вы описываете. Возможно, вы создаете сценарии конфигурации с исправленной версией autoconf. Содержит ли скрипт configure строку libdir='${exec_prefix}/lib'?   -  person William Pursell    schedule 13.02.2012
comment
@WilliamPursell, я не знаю, ищет ли скрипт configure в /etc/: это был просто способ сказать, что это системно-зависимое поведение. Пропатченная версия autoconf более вероятна, так как поведение касается не одного скрипта configure, а в основном каждой библиотеки, которую я компилирую вручную.   -  person Dacav    schedule 13.02.2012
comment
Назначается ли libdir в /usr/local/share/config.site или в $CONFIG_SITE?   -  person William Pursell    schedule 14.02.2012
comment
@WilliamPursell: БИНГО! Это именно то, что я искал. Пожалуйста, ответьте на вопрос, я буду рад принять ваш ответ! Благодаря вашему ответу я нашел delorie.com/gnu/docs/autoconf/ autoconf_138.html   -  person Dacav    schedule 14.02.2012


Ответы (2)


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

person William Pursell    schedule 14.02.2012

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

person Adam Spiers    schedule 18.12.2012