当我运行./configure时,有时会认为它太旧,并通过缺少的脚本重新运行autoconf来重新生成自身。自从自动配置以来,有时会导致奇怪的损坏目标计算机较旧,则原来用于生成配置的autoconf。
我想知道它是怎么发现它太旧了?有配置的标准方法吗?还是取决于库。指向文档的指针将不胜感激。
configure
不能决定:make
可以。如果configure
脚本早于configure.ac
或它包含的任何文件(以aclocal.m4
开头),则make
运行autoconf
来重建configure
。
存在类似的规则来使用aclocal.m4
重建aclocal
,并使用Makefile.in
重建各种automake
。
在目标计算机上解压缩tarball后,永远不要触发这些重建规则,因为tarball中所有这些文件的时间戳都应该正确(configure
比configure.ac
更新,等等。)。因此,如果发生这种情况,则可能是您的tarball中存在伪造的东西(例如您没有使用make dist
或最好使用make distcheck
生成它),或者编译源代码的用户做错了某些事情(例如复制整个目录而不保留任何内容)。时间戳),或目标系统中存在虚假内容(例如,如果NFS服务器的时钟与客户端的时钟不同步,make
通常无法在安装NFS的目录上正常工作)。
有人将生成的文件保留在版本控制系统中的人们观察到了另一个经常出现的不受欢迎的重建来源。如果是您的情况,请参见https://www.gnu.org/software/automake/manual/html_node/CVS.html对此的讨论。