当我运行时./configure有时会判断它太旧并且通过丢失的脚本重新运行autoconf来重新生成自己。自从autoconf开始以来,它有时会导致奇怪的破损 目标机器比autoconf早,用于最初生成configure。
我想知道它是如何发现它太老了?有没有一种标准的配置方式呢?或者它取决于图书馆。指向文档的指针会 不胜感激。
答案 0 :(得分:9)
configure
并未做出决定:make
。如果configure
脚本早于configure.ac
或其包含的任何文件(以aclocal.m4
开头),则make
运行autoconf
以重建{{1} }}
使用configure
重建aclocal.m4
和使用aclocal
的各种Makefile.in
存在类似的规则。
在目标计算机上解压缩tarball之后,永远不应该触发这些重建规则,因为tarball中所有这些文件的时间戳应该是正确的(automake
比configure
更新,等等) 。所以,如果发生这种情况,你的tarball中的任何东西都是假的(就像你没有使用configure.ac
或者最好是make dist
来生成它),或者编译源代码的用户做错了什么(比如复制整个没有保留时间戳的目录),或者目标系统中存在一些虚假(例如,如果NFS服务器的时钟与客户端的时钟不同步,make distcheck
通常无法在NFS安装的目录上正常工作)。
将生成的文件保存在版本控制系统中的人员观察到另一个不受欢迎的重建的常见原因。如果是这种情况,请参阅http://sourceware.org/automake/automake.html#CVS以获取有关此问题的讨论。