【发布时间】: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复制到目标计算机,在那里解压,切换到包目录,然后继续
configure和make。此外,请确保提取tar文件会保留其中的时间戳(这是我有经验的每个tar的默认设置)。 -
将
configure告诉--disable-maintainer-mode也可能会有所帮助,但并非所有configure脚本都支持这一点。 -
我尝试将压缩包复制到超级计算机并在那里解压。这解决了问题,代码编译正确。我不明白 Autotool 对时间戳的依赖。感谢您的帮助@JohnBollinger!
标签: makefile autotools configure