使安装找不到aclocal

时间:2018-08-06 15:03:22

标签: makefile autotools configure

我正在尝试编译代码以在超级计算机上并行运行。我知道其他人已经将此代码编译为在同一台计算机上运行,​​但是由于某些原因,即使使用与他们相同的方法,我也遇到了麻烦。目前,我只是试图编译代码以使其能够串行运行,因为这样应该更容易排除故障。

配置似乎正常工作。 但是 make install 返回以下内容:

> make install

    CDPATH="${ZSH_VERSION+.}:" && cd .. && /bin/sh /home1/username123/code123/config/missing aclocal-1.13 -I ./config -I /home1/username123/code123/build-tools/aclocal -I /usr/local/share/aclocal
    aclocal-1.13: error: couldn't open directory '/usr/local/share/aclocal': No such file or directory
    Makefile:534: recipe for target '../aclocal.m4' failed
    make: *** [../aclocal.m4] Error 1

aclocal确实不在/ usr / local / share / aclocal中,它位于/ usr / bin / aclocal中-但是由于/ usr / bin在我的路径中,所以我不明白为什么该位置是问题。

1 个答案:

答案 0 :(得分:0)

从对该问题的评论中可以清楚地看出,问题是项目源被以一种无法保留其原始时间戳的方式复制到了目标系统上。 Autotools通过make使用文件时间戳记来确定哪些文件已过时,尤其是Autools生成的Makefile包含用于重建构建系统本身的规则,该规则可以触发了这种方式。

通常不需要或不需要重建Autotools项目的生成系统,除非结合实际执行维护。实际上,通常情况是,在本地没有可用的支持。为了避免构建系统认为需要重新构建自身,重要的是保留分发存档中的文件时间戳。对于某些软件包,它也可以将--disable-maintainer-mode参数传递给configure脚本,但绝不是所有Autotools configure脚本都支持。

默认情况下,用于分发基于Autotools程序包的典型存档格式的存档提取工具确实会在解压缩时保留时间戳,因此,

  1. 解压缩目标系统上的归档文件(例如 tar xzf foo-1.2.3.tar.gz
  2. 更改为未打包的源目录(例如 cd foo-1.2.3
  3. configure; make; make install

通常做正确的事。但是,用其他东西代替(1),例如从其他地方复制未打包的源树,可能会使软件包认为需要重建构建系统。如果可以正常工作,那没什么大不了的,但是并非如此并不罕见。这就是这里发生的情况,按照上述标准程序解决了问题。