【问题标题】:Macro not found in libgcrypt on Centos 7在 Centos 7 的 libgcrypt 中找不到宏
【发布时间】:2018-01-03 18:06:32
【问题描述】:

我有一个使用 libgcrypt 的 C 程序。 我把这个字符串放在构建器中来安装 Centos 7 的库:

yum -y install json-c-devel expat-devel libpcap-devel flex-devel automake libtool bison libuv-devel openssl-devel libgcrypt-devel

没有问题出来。

很遗憾,代码的编译因找不到宏导致的错误而终止:

错误:'GCRY_CIPHER_MODE_GCM' 未声明(在此函数中首次使用)

宏肯定在libgcrypt里面,所以我真的不明白怎么找不到。

如果我在 Debian 中编译相同的代码,它运行良好并且宏被正确解析。

P.S.我的系统是 Debian 8,我在 Centos 7 上使用 docker

【问题讨论】:

  • 你的 Debian 上libgcrypt 的版本是什么?
  • 你的程序实际上#include 是gcrypt 的适当头文件吗?更一般地说,请编辑您的问题以提供一个 minimal reproducible example 来演示问题。
  • 在 Debian、libgcrypt20 上,是的,我正确地包含了头文件
  • "宏在 libgcrypt 中":宏从不在库中定义,但总是在源文件中,在这种情况下通常在头文件中将开发包随库一起提供。
  • @alk 我想说,当然,我的意思是在头文件中。

标签: c linux makefile macros centos7


【解决方案1】:

CentOS-7 使用libgcryptlibgcrypt-devel 1.5 版(已修补),其中似乎不包括GCRY_CIPHER_MODE_GCM 声明。

查看 git 提交,它似乎在 1.6+ 中可用。

https://git.gnupg.org/cgi-bin/gitweb.cgi?p=libgcrypt.git;a=commit;h=90cce18b9eced4f412ceeec5bcae18c4493322df

在较新的版本中,您会在 /usr/include/gcrypt.h 中看到一行,如下所示:

GCRY_CIPHER_MODE_GCM      = 9,   /* Galois Counter Mode. */

【讨论】:

猜你喜欢
  • 2017-10-27
  • 2020-12-09
  • 2019-11-07
  • 1970-01-01
  • 2018-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多