【问题标题】:MKDIR_P isn't defined in MakefileMKDIR_P 未在 Makefile 中定义
【发布时间】:2013-01-09 22:19:12
【问题描述】:

我有一个安装失败的客户网站。问题的根源在于变量 MKDIR_P 从未扩展。环顾四周,这似乎是一个棘手的问题,它在不同版本的 autotools 中出现,尽管这个站点有 autoconf 2.69,而且我能找到的示例问题(和解决方案)都不是最近的版本。有没有人知道如何针对不同版本的自动工具编写可移植或至少在某种程度上可移植的解决方案?

【问题讨论】:

  • 站点上的 autoconf 版本是无关紧要的,除非您发送损坏的 tarball。如果您发布了正确构建的 tarball,那么不同版本的 autotools 没有问题,因为它们只有在您的开发箱中才是重要的。
  • 该站点的 tarball 存在问题,需要重新生成内容。我们的 tarball 可以在所有其他网站上使用。
  • $prefix/share 中有 config.site 文件吗?运行配置时是否设置了 CONFIG_SITE?
  • 配置时未设置CONFIG_SITE。系统上有一个 config.site 文件(我使用 locate 找到了一个),但它不在 $prefix/share 中。
  • makefile 是使用 Automake 生成的,还是手动维护的?

标签: makefile autotools autoconf


【解决方案1】:

这应该不是必需的,但您应该能够在配置时简单地定义它:

./configure MKDIR_P='mkdir -p'

【讨论】:

  • 这在他们的系统上不起作用。其他不起作用的事情包括将 AC_PROG_MKDIR_P 添加到 configure.ac 并将 MKDIR_P="mkdir -p" AC_SUBST(MKDIR_P) 添加到 configure.ac。这是否意味着他们的自动工具安装完全是垃圾?
  • 它不会导致在 Makefile 中定义 MKDIR_P。
  • 你的意思是MKDIR_P = @MKDIR_P@没有出现在Makefile.in中,还是MKDIR_P =出现在Makefile中,=之后什么都没有,或者grep MKDIR_P Makefile失败,或者其他什么? MKDIR_P 是否在 config.status 中定义?
  • 在config.status中定义正确,但不在Makefile.in中,也不在Makefile中。它在Makefile中唯一出现的地方是mkdir_p = $(MKDIR_P),但是在Makefile中并没有MKDIR_P的定义,甚至没有一个空的。
  • 显然我的错误是由 SLES 11 SP2 引起的,它在 automake 中有一个错误。降级 automake 解决了这个问题。
【解决方案2】:

显然,SLES 11 SP2 (1.10.1) 附带的 automake 版本存在错误。降级 automake 解决了这个问题,虽然我不记得该网站的版本。该问题不会持续到更高版本的 automake 中,因此进一步升级也应该可以解决问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-03
    • 2011-11-18
    • 1970-01-01
    • 1970-01-01
    • 2018-05-25
    • 1970-01-01
    相关资源
    最近更新 更多