gpt4 book ai didi

autotools - 如何解决 "Possibly undefined macro: AC_MSG_ERROR"

转载 作者:行者123 更新时间:2023-12-05 08:54:56 38 4
gpt4 key购买 nike

我正在尝试构建 libpsl来自 GutHub 来源。它需要一个 autoreconfAutotools is failing with :

# Try to reconfigure. Autotools is so broken...
libtoolize --force && aclocal && autoheader && autoreconf --force --install
...

libtoolize: copying file 'm4/ltversion.m4'
libtoolize: copying file 'm4/lt~obsolete.m4'
configure.ac:62: error: possibly undefined macro: AC_MSG_ERROR
If this token and others are legitimate, please use m4_pattern_allow.
See the Autoconf documentation.
configure.ac:68: error: possibly undefined macro: AC_MSG_CHECKING
configure.ac:70: error: possibly undefined macro: AC_MSG_RESULT
configure.ac:87: error: possibly undefined macro: AC_LINK_IFELSE
configure.ac:88: error: possibly undefined macro: AC_LANG_PROGRAM
configure.ac:222: error: possibly undefined macro: AC_SEARCH_LIBS
...

我找到了 Possibly undefined macro: AC_MSG_ERRORAS_IF and AC_MSG_ERROR: error: possibly undefined macro ,但猜测并没有解决我的问题。在过去的 4 个小时里,我一直在尝试猜测。

我想停止猜测并解决问题。我遇到的问题是,我找不到有关解决 Autotools 问题的信息或程序。商议,"troubleshoot" autoconf site:gnu.org .

我想出的最好办法是使用 -v 运行命令,但我没有看到复制 general.m4 的尝试。如果我没记错的话,general.m4 提供了 AC_MSG_ERROR 所以我应该看到它被访问了。所以我的程序有明显的漏洞或缺陷。并且文件存在:

$ find /usr/local -name general.m4
/usr/local/share/autoconf/autoconf/general.m4
/usr/local/share/autoconf/autotest/general.m4

如何解决 可能未定义的宏:AC_MSG_ERROR Autotools 问题?

最佳答案

How does one troubleshoot a Possibly undefined macro: AC_MSG_ERROR problem with Autotools?

首先,在可能的情况下,应该通过不重建构建系统 来完全避免这种情况。 Autotools 构建系统旨在不需要将重建作为构建包的先决条件,因此第一步应该始终是尝试 ./configure; make 根本不运行 Autotools。

如果您确实需要重建构建系统,这有时是必要的,因为即使是最好的 Autotools 黑客也无法解释所有可能的当前和 future 构建环境,那么第一步是确保您拥有最新版本的Autotools 并运行 autoreconf --install --force(我看到你已经在做了)。这可确保为您拥有的 Autotools 版本正确设置所有内容。

这让我们回到了实际问题,关于故障排除,特别是关于引用标准 Autoconf 宏(例如 AC_MSG_ERROR)的错误故障排除。您可以使用多种工具和方法,其中包括:

  • 查看警告中报告的 configure.ac 行,尤其是最低的行,以及前面的行。这个特定的错误表明文本被发送到输出文件中,看起来像一个未扩展的宏名称,因此问题通常是由不正确的引用或未闭合的宏参数列表引起的。

    • 使用可以为您进行括号匹配的编辑器会很有帮助,这样您就可以轻松验证每个宏的参数列表真正的结束位置。
    • 使用知道如何为 Autoconf 源文件突出显示代码的编辑器会特别有帮助。
  • 检查 Autoconf 输出的 configure 脚本。找到它开始出错的地方(在这种情况下,未扩展的宏名称将帮助您找到它),并将它和前面的正确输出与您的 configure.ac 和任何外部的内容相关联它所依赖的宏定义。这可以帮助您查明错误的轨迹。

  • 您可以使用 #dnl 注释掉 Autoconf 源代码行,以应用二分法跟踪错误行。

  • 直接运行 autoconf,带有额外的面向调试的选项。例如,

    autoconf --verbose --force --warnings=all

    还有一个 --debug 选项可以保留临时文件,但我怀疑它对您的目的用处不大。

  • 在某些情况下,使用 --trace 选项可能有助于跟踪对一个或多个宏的调用,但我认为这与您询问的特定错误。请注意,跟踪输出取代了 autoconf 通常输出的配置脚本。

关于autotools - 如何解决 "Possibly undefined macro: AC_MSG_ERROR",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48093804/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com