Не удается запустить Makefile.am, что мне делать?
У меня есть проект C для компиляции и запуска в Linux. Это очень большой проект со многими подкаталогами. Внутри родительского каталога есть файлы Makefile.am
и Makefile.in
.
Я попробовал запустить make -f Makefile.am
и получил следующую ошибку:
make: Nothing to be done for `Makefile.am'.
Что это значит? Как выполнить мою задачу?
Ответы
Ответ 1
Эти файлы используются с пакетом Autotools. Файлы Makefile.am скомпилированы в Makefiles с помощью automake.
Посмотрите, есть ли в каталоге configure
script. Если есть, то введите:
./configure
Если нет, то запустите:
autoreconf
в каталоге, который должен создать configure
script (вам нужно будет установить набор Autotools для его запуска).
После этого вы должны иметь configure
script, который вы можете запустить.
После завершения настройки вы должны иметь обычный Makefile в каталоге и сможете запускать
make
Ответ 2
Что осталось:
- Makefile.am преобразуется в Makefile.in с использованием automake.
- Makefile.in преобразуется в Makefile, запустив configure.
Ни один из них (Makefile. {am, in}) не предполагается использовать с make -f
.
Если tarball уже поставляется с настройкой, просто запустите это и сделайте. Если это не так, запустите ./autogen.sh
или bootstrap
(*). Если этого не существует, используйте autoreconf
вместо этого.
(*) autogen/bootstrap: удобство script добавлено разработчиками, которые должны просто вызвать autoreconf
. К сожалению, есть люди, которые избегают autoreconf и излишне называют все команды низкого уровня.
Ответ 3
В дополнение к уже сказанному:
Найдите script, называемый configure в каталоге проекта. Если он есть, то создание проекта будет:
./Configure
сделать
и, необязательно, для установки:
sudo make install
или su -c "make install"
Даже если нет конфигурации script. может быть один autogen.sh. Запустите этот script, чтобы сгенерировать конфигурацию script и выполните действия, описанные выше.
Ответ 4
Makefile.am
, вероятно, будет использоваться с automake.
попробовать:
automake
вы также можете просто попробовать
make -f Makefile.in
Так как это произведение запускаемого автомата