Openssl 如何修复evp\u cipher\u ctx和std::pair<;t1、t2>;::第二个不完全类型错误?
在picco目录下运行以下docker命令时以及克隆MPC SoK/frameworks后,我收到了以下编译错误:Openssl 如何修复evp\u cipher\u ctx和std::pair<;t1、t2>;::第二个不完全类型错误?,openssl,std-pair,evp-cipher,Openssl,Std Pair,Evp Cipher,在picco目录下运行以下docker命令时以及克隆MPC SoK/frameworks后,我收到了以下编译错误: “struct evp\u cipher\u ctx”的转发声明 “std::pair::second”的类型不完整 “EVP_CIPHER_CTX en”具有初始值设定项,但类型不完整 我见过许多与一个或多个特定错误相关的github和stack交换票据和帖子,但没有一个真正为它们提供了可行的解决方案,例如: 第一个和第三个错误似乎是由于Openssl中的更新造成的
- “struct evp\u cipher\u ctx”的转发声明
- “std::pair::second”的类型不完整
- “EVP_CIPHER_CTX en”具有初始值设定项,但类型不完整
我想知道以前是否有人看到并成功地修复了这些错误,如果有,他们做了什么,在哪台机器上,以及可能的话使用了哪些依赖项?查看您提到的存储库,
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
是最新的ubuntults,目前一些openssl1.1
版本是标准版。这破坏了你的身材,你已经知道了
看起来您唯一需要更改的是选择
Dockerfile
中的libssl-dev
包,您必须将其替换为libssl1.0-dev
。这将安装OpenSSL的1.0.2
版本,代码就是为其编写的。我在上面找到了1.0
版本化的openssl软件包的名称。你能包括你克隆的GitHub repo的链接吗?@ReinierTorenbeek我已经添加了到该repo的链接。谢谢,这很有帮助——请看我的答案。@RinierTorenbeek非常感谢你的帮助!不过,我仍然感到惊讶的是,当我将新vm的openssl版本降级到1.0.2时,代码没有编译。当我确认降级后使用的版本确实是1.0.2时,我很高兴。您的意思是说您运行了实际的install.sh
脚本来在您的虚拟机中构建内容吗?或者你的意思是说,docker build-t picco.
命令仍然失败?@z.karl:OK。除非更改Dockerfile
,否则docker命令将不会成功,因为整个构建都发生在docker内部,而在docker外部执行的任何操作都不会产生太大的效果。我不知道为什么在降低OpenSSL等级后,在VM中运行install.sh
可能不起作用——这可能是另一个问题:-)
FROM ubuntu:latest
WORKDIR /root
RUN apt-get update && apt-get install -y \
bison \
flex \
g++ \
git \
libgmp-dev \
libssl-dev \
make \
python \
vim