Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何克服';A局部-1.15';在您的系统上缺少“;警告 我试图在Github上运行一个C++程序。(可从以下链接获得)_C++_Github_Makefile_Automake - Fatal编程技术网

如何克服';A局部-1.15';在您的系统上缺少“;警告 我试图在Github上运行一个C++程序。(可从以下链接获得)

如何克服';A局部-1.15';在您的系统上缺少“;警告 我试图在Github上运行一个C++程序。(可从以下链接获得),c++,github,makefile,automake,C++,Github,Makefile,Automake,我有一台mac电脑,正试图在终端上运行它。我想我已经下载了autoconf和automake,但不确定。要运行程序,我将进入终端中的正确文件夹,然后运行 ./configure && make 但我得到了一个错误: 警告:您的系统上缺少“aclocal-1.15”。 只有在修改“acinclude.m4”或 “configure.ac”或“configure.ac”包含的m4文件。 “aclocal”计划是GNU Automake软件包的一部分: 它还需要GNU Autoco

我有一台mac电脑,正试图在终端上运行它。我想我已经下载了autoconf和automake,但不确定。要运行程序,我将进入终端中的正确文件夹,然后运行

./configure && make 
但我得到了一个错误:

警告:您的系统上缺少“aclocal-1.15”。 只有在修改“acinclude.m4”或 “configure.ac”或“configure.ac”包含的m4文件。 “aclocal”计划是GNU Automake软件包的一部分: 它还需要GNU Autoconf、GNU m4和Perl才能运行: make:**[aclocal.m4]错误127


我有xcode和g++以及运行c程序所需的所有东西,但很明显,我不知道我在做什么


在上面的链接中,运行程序最简单、最简单的方法是什么?我意识到它附带了自述和示例用法,但我无法实现。

通常,您不需要任何
auto*
工具,最简单的解决方案是只需在相关文件夹中运行
touch aclocal.m4 configure
(并且在
Makefile.am
Makefile.in
上运行
touch
,如果它们存在的话). 这将更新
aclocal.m4
的时间戳,并提醒系统
aclocal.m4
是最新的,不需要重建。在此之后,最好清空
build
目录,然后重新运行
configure
。我经常遇到这个问题。对我来说,根本原因是我从另一个文件夹复制了一个库(例如,
mpfr
code For
gcc
),并且时间戳发生了变化

当然,如果确实需要重新生成这些文件,则此技巧无效,可能是因为您手动更改了它们。但希望包的开发人员能够分发最新的文件


当然,如果您确实想安装
automake
和friends,请为您的发行版使用适当的软件包管理器


安装automake附带的aclocal:

brew install automake          # for Mac
apt-get install automake       # for Ubuntu
请重试:

./configure && make 

在运行
/configure
之前,请尝试运行
autoreconf-f-i
。autoreconf程序会根据需要自动运行autoheader、aclocal、automake、autopoint和libtoolize

编辑添加:这通常是由于从Git签出代码而不是从
.zip
.tar.gz
存档中提取代码造成的。为了在文件更改时触发重建,Git不会保留文件的时间戳,因此
configure
脚本可能已过时。正如其他人所提到的,如果您没有最新版本的
autoreconf
,那么有一些方法可以解决这个问题


另一个编辑:将使用scp从存档中提取的源文件夹复制到另一台计算机也可能导致此错误。时间戳可以更新,这表明需要重建。要避免这种情况,请复制存档并将其解压缩到位。

一个可能适用于或不适用于此特定情况的通用答案:

正如错误消息所提示的,只有在修改用于生成aclocal.m4的文件时,才需要aclocal-1.15

如果您不修改这些文件中的任何一个(包括configure.ac),那么就不需要使用aclocal-1.15

在我的例子中,问题不是这些文件中的任何一个都被修改了,而是configure.ac上的时间戳比aclocal.m4晚了6分钟

我还不知道为什么,但我的git回购协议的一个干净克隆为我解决了这个问题。可能是一些与git相关的东西,以及它最初是如何创建文件的

与其重新运行autoconf和friends,我宁愿尝试获得一个干净的克隆,然后再试一次


也可能有人对configure.ac进行了更改,但没有重新生成aclocal.m4,在这种情况下,您确实必须重新运行automake和friends。

自动工具的全部目的是提供一种基于m4宏的奥术语言,该语言最终编译成一个名为
/configure
的shell脚本。您可以将这个编译好的shell脚本与源代码一起发布,该脚本应该能够检测环境并为构建程序做好准备。只有想调整测试并刷新shell脚本的人才需要自动工具

如果GNU这个和GNU必须安装在系统上才能工作,那么它就破坏了自动工具的功能。最初,它是为了简化程序到各种Unix系统的移植而发明的,而这些Unix系统不能指望在它们上面有任何东西。即使是在
/configure
中生成的shell代码所使用的结构也必须非常仔细地选择,以确保它们在几乎所有地方都能在每个破损的旧shell上工作

您遇到的问题是由于一些人发明了一些损坏的Makefile步骤,他们根本不了解Autotools的用途以及最终的
/configure
脚本的作用

作为一种解决方法,您可以进入Makefile并进行一些更改以避免此问题。作为一个例子,我正在构建GNU Awk的Git头,并遇到了同样的问题。我将此修补程序应用于
Makefile.in
,但是,我可以成功地
makegawk

diff——git a/Makefile.in b/Makefile.in

index 5585046..b8b8588 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -312,12 +312,12 @@ distcleancheck_listfiles = find . -type f -print

 # Directory for gawk's data files. Automake supplies datadir.
 pkgdatadir = $(datadir)/awk
-ACLOCAL = @ACLOCAL@
+ACLOCAL = true
 AMTAR = @AMTAR@
 AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
+AUTOCONF = true
+AUTOHEADER = true
+AUTOMAKE = true
 AWK = @AWK@
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
基本上,我改变了一些东西,以便用无害的
true
shell命令替换所有自动填充程序

Gawk的实际构建步骤不需要自动的东西!它只涉及一些规则,这些规则会在汽车部件发生更改并需要重新处理时被调用。但是,Makefile的结构是这样的:如果工具不存在,它就会失败。
$ ./configure
[...]
$ make gawk
CDPATH="${ZSH_VERSION+.}:" && cd . && /bin/bash /home/kaz/gawk/missing aclocal-1.15 -I m4
/home/kaz/gawk/missing: line 81: aclocal-1.15: command not found
WARNING: 'aclocal-1.15' is missing on your system.
         You should only need it if you modified 'acinclude.m4' or
         'configure.ac' or m4 files included by 'configure.ac'.
         The 'aclocal' program is part of the GNU Automake package:
         <http://www.gnu.org/software/automake>
         It also requires GNU Autoconf, GNU m4 and Perl in order to run:
         <http://www.gnu.org/software/autoconf>
         <http://www.gnu.org/software/m4/>
         <http://www.perl.org/>
make: *** [aclocal.m4] Error 127
$ ./configure
[...]
$ make gawk
CDPATH="${ZSH_VERSION+.}:" && cd . && true -I m4
CDPATH="${ZSH_VERSION+.}:" && cd . && true
gcc -std=gnu99 -DDEFPATH='".:/usr/local/share/awk"' -DDEFLIBPATH="\"/usr/local/lib/gawk\"" -DSHLIBEXT="\"so"\" -DHAVE_CONFIG_H -DGAWK -DLOCALEDIR='"/usr/local/share/locale"' -I.     -g -O2 -DNDEBUG -MT array.o -MD -MP -MF .deps/array.Tpo -c -o array.o array.c 
[...]
gcc -std=gnu99  -g -O2 -DNDEBUG  -Wl,-export-dynamic -o gawk array.o awkgram.o builtin.o cint_array.o command.o debug.o dfa.o eval.o ext.o field.o floatcomp.o gawkapi.o gawkmisc.o getopt.o getopt1.o int_array.o io.o main.o mpfr.o msg.o node.o profile.o random.o re.o regex.o replace.o str_array.o symbol.o version.o      -ldl -lm
$ ./gawk --version
GNU Awk 4.1.60, API: 1.2
Copyright (C) 1989, 1991-2015 Free Software Foundation.
[...]
$ wget https://ftp.gnu.org/gnu/automake/automake-1.15.tar.gz
$ tar -xzvf automake-1.15.tar.gz
$ cd automake-1.15
$ ./configure  --prefix=/opt/aclocal-1.15
$ make
$ sudo mkdir -p /opt
$ sudo make install
$ export PATH=/opt/aclocal-1.15/bin:$PATH
$ aclocal --version
touch --date="`date`" aclocal.m4 Makefile.am configure Makefile.in
$ autoreconf -f -i