如何修复 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 .
- 前向声明 'struct evp_cipher_ctx'
- 'std::pair<_T1, _T2>::second' 类型不完整
- 'EVP_CIPHER_CTX en' 有初始化器但类型不完整
我已经看到许多与这些特定错误中的一个或多个相关的 github 和堆栈交换票证和帖子,并且 none 实际上已经为它们提供了可行的解决方案,例如:
std::pair related stack answer
似乎第一个和第三个错误是由于 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 包的名称
当 运行 在 picco 中执行以下 docker 命令时,我收到以下编译错误,an MPC compiler, directory and after cloning the MPC-SoK/frameworks github repo:
docker build -t picco .
- 前向声明 'struct evp_cipher_ctx'
- 'std::pair<_T1, _T2>::second' 类型不完整
- 'EVP_CIPHER_CTX en' 有初始化器但类型不完整
我已经看到许多与这些特定错误中的一个或多个相关的 github 和堆栈交换票证和帖子,并且 none 实际上已经为它们提供了可行的解决方案,例如:
std::pair related stack answer
似乎第一个和第三个错误是由于 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 包的名称