automake错误:未找到AM_INIT_AUTOMAKE的正确调用

时间:2013-04-24 09:28:04

标签: autotools automake

我是autotools的新手,并遵循此tutorial。但我无法解决这个错误,

   $ 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看起来不错,不知道它有什么问题。

4 个答案:

答案 0 :(得分:25)

您从哪里复制并粘贴了configure.ac?无论该网站是什么,您都应该从书签中删除它!

您正在使用新的AC_INIT方式来指示包版本,使用旧的AM_INIT_AUTOMAKE方式执行相同的操作。不要两者都做。 ( new 是指10年前发生的一个开关。)从Automake 1.13开始,用两个参数调用AM_INIT_AUTOMAKE的旧方法是no-longuer支撑。

在您的情况下,删除AM_INIT_AUTOMAKE参数,并正确设置AC_INIT参数以反映项目的名称和版本应该足够了。

请参阅the automake manual,了解最简单的configure.ac开头的最新示例。

不要自己调用automake,只需使用autoreconf -vfi,以便按正确的顺序运行所有相关工具,然后安装丢失的文件。

答案 1 :(得分:7)

你必须逐行修复它。

首先,您的Makefile.am需要depcomp。因此,您必须将其复制到您的文件夹(对于此步骤,您可以运行automake --add-missing以便自动添加丢失的文件):

cp -a /usr/share/automake-X.XX/depcomp .

其次,您必须在aclocal之前运行automake

$ aclocal

最后,您可以运行automake

$ automake
$ autoconf

答案 2 :(得分:0)

在我的例子中,将libtool从2.2.6更新为2.4.6。 ps:我使用的是1.15版本的automake。 在运行aclocal和autoheader之前运行libtoolize。

答案 3 :(得分:0)

试试

autoreconf -i

autoreconf 将通过添加推荐或必需的缺失文件将项目引导到可分发状态。