如何修复 evp_cipher_ctx 和 std::pair<t1,t2>::second 不完整类型错误?

How might one fix evp_cipher_ctx and std::pair<t1,t2>::second incomplete type errors?

当 运行 在 picco 中执行以下 docker 命令时,我收到以下编译错误,an MPC compiler, directory and after cloning the MPC-SoK/frameworks github repo:

docker build -t picco .

我已经看到许多与这些特定错误中的一个或多个相关的 github 和堆栈交换票证和帖子,并且 none 实际上已经为它们提供了可行的解决方案,例如:

似乎第一个和第三个错误是由于 Openssl 中的更新引起的,但是我已经尝试 运行 新鲜的 Ubuntu 16.04 和 18.04 VM 与 1.0.1、1.0.2、1.1.0和 1.1.1 of openssl 以及 Mac OSX High Sierra 和 openssl 1.0.2,都具有相同的故障点,并且都具有相同的三个 类 错误。

我也试过 here 的解决方案,我手动进入并将 EVP_CIPHER_CTX 变量更改为指针并使用它们相关的释放函数。这也行不通。

我想知道以前是否有人看到并成功修复了这些错误,如果是的话,他们做了什么,在什么机器上,如果可能的话使用了哪些依赖项?

查看您提到的存储库,Dockerfile 以以下内容开头:

FROM ubuntu:latest
WORKDIR /root
RUN apt-get update && apt-get install -y \
  bison \
  flex \
  g++ \
  git \
  libgmp-dev \
  libssl-dev \
  make \
  python \
  vim

安装的软件包之一是 libssl-dev,它没有版本指示。现在 ubuntu:latest 是最新的 Ubuntu LTS,目前一些 openssl 1.1 版本是标准的。正如您已经发现的那样,这会破坏您的构建。

看来您唯一需要更改的是Dockerfile中选择libssl-dev包,您必须将其替换为libssl1.0-dev。这将安装 1.0.2 版本的 OpenSSL,为此编写了代码。我在 Ubuntu 18.04 openssl package information page.

上找到了那个 1.0 版本控制的 openssl 包的名称