可能未定义的宏:AC_MSG_FAILURE

Posted

技术标签:

【中文标题】可能未定义的宏:AC_MSG_FAILURE【英文标题】:possibly undefined macro: AC_MSG_FAILURE 【发布时间】:2016-03-04 19:27:42 【问题描述】:

尝试基于 MD5 engine 示例的演示代码创建 OpenSSL 引擎。 readme 文件说我必须使用以下命令来构建引擎:

$ autoreconf -i
$ ./configure
$ make

到目前为止一切顺利。问题是当我执行autoreconf -i 时会产生错误:

configure.ac:18: error: possibly undefined macro: AC_MSG_FAILURE
      If this token and others are legitimate, please use m4_pattern_allow.
      See the Autoconf documentation.
autoreconf: /usr/bin/autoconf failed with exit status: 1

我不得不提一下,我已经安装了所有需要的工具(autoconf、automake、libtool、pkg-config),并且我在 Google 搜索的第一页上用尽了所有结果。 如果我使用命令autoreconf -vi,则不会出现错误,但不会生成 Makefile,因此我无法完成构建过程。 我的操作系统是 Ubuntu 14.04 64 位,OpenSSL 版本是 1.0.1f 2014 年 1 月 6 日。 我做错了什么?有什么问题?

【问题讨论】:

OpenSSL 不使用 Autotools 和朋友。他们有自己的构建系统。请参阅 OpenSSL wiki 上的 Compilation and Installation。 ENGINE 的最简单示例之一是位于 <openssl src>/crypto/engine/eng_rdrand.c 的英特尔 RDRAND 引擎。 【参考方案1】:

不幸的是,这是 autoconf 的一个常见问题,错误的宏会报告错误。最简单的做法是查找在AC_MSG_FAILURE 之前调用的最新宏,在链接代码中为AX_CHECK_OPENSSL

AX_ 前缀由 Autoconf Archive 宏使用,这让您知道在哪里可以找到它。

我建议在引擎的存储库中创建一个m4 目录并将正确的宏文件从存档复制到其中,然后使用autoreconf -fi -I m4 让它在那里查找宏文件。

【讨论】:

以上是关于可能未定义的宏:AC_MSG_FAILURE的主要内容,如果未能解决你的问题,请参考以下文章

VBA的宏显示“子过程或函数未定义”

产生“已定义”的宏扩展具有未定义的行为

如何修复链接源文件时未定义的宏?

goland出现未定义Gotoot解决方法

OpenCV2升级到OpenCV3遇到“未定义的标识符”

c语言define用法