ошибка, использующих automake: без надлежащего вызова м. ИНИТ сожалению был найден


Я новичок в autotools и следую этому учебнику. но я не мог решить эту ошибку,

   $ automake
   configure.ac: error: no proper invocation of AM_INIT_AUTOMAKE was found.
   ..
   Makefile.am: error: required file './depcomp' not found
   ..
   /usr/share/automake-1.12/am/depend2.am: error: am__fastdepCC does not appear in AM_CONDITIONAL
  ..
  /usr/share/automake-1.12/am/depend2.am: error: AMDEP does not appear in AM_CONDITIONAL
  ..

Мой configure.ac файл

   # -*- Autoconf -*-
   # Process this file with autoconf to produce a configure script.

   AC_PREREQ([2.69])
   AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])
   AM_INIT_AUTOMAKE(hello,1.0)
   AC_CONFIG_SRCDIR([config.h.in])
   AM_CONFIG_HEADERS(config.h)

   # Checks for programs.
   AC_PROG_CC

   # Checks for libraries.

   # Checks for header files.
   AC_CHECK_HEADERS([sys/time.h])

   # Checks for typedefs, structures, and compiler characteristics.

   # Checks for library functions.
   AC_CHECK_FUNCS([gettimeofday])

   AC_CONFIG_FILES([Makefile])
   AC_OUTPUT

Я проверил решение в интернете, мой configure.ac выглядит нормально, не знаю, что с ним не так.

3 10

3 ответа:

Вы должны исправить это строка за строкой.

Во-первых, ваш Makefile.am требуемый depcomp. Итак, вы должны скопировать его в свою папку (для этого шага вы можете запустить automake --add-missing, чтобы добавить отсутствующие файлы автоматически):

cp -a /usr/share/automake-X.XX/depcomp .
Во-вторых, вы должны запустить aclocal до automake:
$ aclocal

Наконец, вы можете запустить automake:

$ automake
$ autoconf

Откуда вы скопировали и вставили свой configure.ac? Каким бы ни был этот сайт, вы должны удалить его из своих закладок!

Вы смешиваете новый способ AC_INIT, чтобы указать версию пакета, со старым способом AM_INIT_AUTOMAKE, чтобы сделать то же самое. Не делай так. (Old и new относятся к переключению, которое произошло 10 лет назад.) Начиная с Automake 1.13 старый способ вызова AM_INIT_AUTOMAKE с двумя аргументами не поддерживается.

В вашем случае удаление аргументов AM_INIT_AUTOMAKE и достаточно правильно настроить аргумент AC_INIT, чтобы он отражал название и версию вашего проекта.

Смотритеруководство по автоматическому изготовлению для современного примера очень простого configure.ac для начала.

Вместо того, чтобы вызывать automake самостоятельно, просто используйте autoreconf -vfi, чтобы он запускал все соответствующие инструменты в правильном порядке и устанавливал отсутствующие файлы.

В моем случае обновление libtool с 2.2.6 до 2.4.6. ps: я использую версию 1.15 automake. Запустите libtoolize перед запуском aclocal и autoheader.