Вы не должны копировать libtool
в каталог вашей программы вручную. Вы запускаете libtoolize
в своем скрипте начальной загрузки, который обрабатывает это для вас. Я предполагаю, что он делает больше, чем просто копирует libtool для вас, например, информирует automake, что он не должен удалять файл. Вот пример сценария начальной загрузки:
#!/bin/sh
aclocal -I config &&
libtoolize --force --copy &&
autoheader &&
automake --add-missing --copy --foreign &&
autoconf &&
./configure -C "$@"
Этот скрипт традиционно называется либо bootstrap
, либо autogen.sh
. Эти имена не универсальны, просто так. Всего несколько дней назад я наткнулся на проект, например, bootstrap.sh
.
Во многом название сценария является вопросом моды и стиля. Это не совсем поверхностно, потому что часть современного стиля - это шаг от запуска configure
в конце скрипта. bootstrap
- более новое имя, поэтому скрипт с именем, который с меньшей вероятностью будет запускать configure
в конце. Глава 8 Autobook подразумевает, что это тоже так, но я наткнулся на контрпримеры. (То есть проекты с autogen.sh
сценарием, который не вызывает configure
, и проекты с bootstrap
сценарием, которые это делают.)
На мой взгляд, вопрос о том, включать ли в конце шаг configure
, сводится к тому, насколько типичны варианты использования вашего проекта. Если почти каждый, кто нуждается в начальной загрузке дерева сборки вашего проекта, примет стандартные флаги configure
, определенные в сценарии начальной загрузки, или, возможно, добавит один или два простых флага, то можно автоматически запустить configure
. Лучше всего сделать это отдельным ручным шагом, если многим людям потребуется выполнить тяжелую настройку. Например, когда многие ваши пользователи кросс-компилируют ваш проект. Способы запроса configure
сделать это хорошо известны, в то время как кто-то должен прочитать код вашего сценария начальной загрузки, чтобы выяснить, как передать параметры встроенной команде configure
.
Вам почти наверняка придется настроить этот скрипт в соответствии с потребностями вашего проекта. Самое важное, что нужно оставить как есть, это порядок операций. Автоинструменты чувствительны к этому. Возможно, вам придется изменить флаги с учетом команд; например, -I config
в команде aclocal
не является универсальным. Скорее всего, вам потребуется добавить шаги к процессу, окружив эти общие шаги или, возможно, даже чередуя их.
Что касается опции autoreconf
, я еще не стал фанатом. Я нахожу, что его встроенные предположения так или иначе нарушают все мои проекты. Если ваш проект является стандартным проектом в стиле GNU, он может работать на вас.
Кстати, макрос AC_PROG_LIBTOOL
устарел . Вы должны использовать LT_INIT
вместо.