【问题标题】:make install can't find aclocalmake install 找不到 aclocal
【发布时间】:2019-01-13 14:07:58
【问题描述】:

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

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 在我的路径中,我不明白为什么该位置是问题。

【问题讨论】:

  • 您最初是如何将代码放到超级计算机上的?你在make install之前做什么?令人惊讶的是,make 一开始就在寻找这样的文件——它仅用于维护项目的基于 Autotools 的构建系统,而不应该是构建或安装项目本身所必需的。
  • 我将源代码复制到超级计算机上,然后“配置”(为方便故障排除而使用默认设置),然后“进行安装”。当我最初尝试编译代码(包括额外的库和 MPI)时,我收到了一些关于 git 和 libtools 的奇怪错误,这些错误在构建和安装的上下文中似乎也没有意义。
  • 恐怕这还不够具体,但我可以说您应该分发tarball复制到目标计算机,在那里解压,切换到包目录,然后继续configuremake。此外,请确保提取 tar 文件会保留其中的时间戳(这是我有经验的每个 tar 的默认设置)。
  • configure 告诉--disable-maintainer-mode 也可能会有所帮助,但并非所有configure 脚本都支持这一点。
  • 我尝试将压缩包复制到超级计算机并在那里解压。这解决了问题,代码编译正确。我不明白 Autotool 对时间戳的依赖。感谢您的帮助@JohnBollinger!

标签: makefile autotools configure


【解决方案1】:

正如 cmets 关于该问题的说明,问题在于项目源以未能保留其原始时间戳的方式复制到目标系统。 Autotools 通过make 使用文件时间戳来确定哪些文件已过期,特别是Autools-生成的Makefiles 包含重建构建系统本身的规则,可以通过这种方式触发。

通常不需要或不希望重新构建 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),例如从其他地方复制解压缩的源代码树,可能会导致包认为它需要重建构建系统。如果它工作正常,那没什么大不了的,但它不正常的情况并不少见。这就是这里发生的事情,按照上述标准程序解决了问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-30
    • 2021-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-19
    • 2020-05-11
    相关资源
    最近更新 更多