1

在 picco、 MPC 编译器、目录和克隆 MPC-SoK/frameworks github repo后运行以下 docker 命令时,我收到以下编译错误:

docker build -t picco .
  • 'struct evp_cipher_ctx' 的前向声明
  • 'std::pair<_T1, _T2>::second' 的类型不完整
  • 'EVP_CIPHER_CTX en' 具有初始化程序但类型不完整

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

似乎第一个和第三个错误是由于 Openssl 中的更新造成的,但是我尝试在 Mac OSX High Sierra 上运行带有 1.0.1、1.0.2、1.1.0 和 1.1.1 的 openssl 的全新 Ubuntu 16.04 和 18.04 VM使用 openssl 1.0.2,都具有相同的故障点并且都具有相同的三类错误。

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

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

4

1 回答 1

2

查看您提到的存储库,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版本是标准的。正如您已经发现的那样,这会破坏您的构建。

看起来您唯一需要更改的是libssl-dev包的选择Dockerfile,您必须将其替换为libssl1.0-dev. 这将安装一个1.0.2OpenSSL 版本,代码是为它编写的。我在这个Ubuntu 18.04 openssl 包信息页面1.0上找到了该版本的 openssl 包的名称。

于 2018-09-14T19:15:36.650 回答