Как можно исправить evp_cipher_ctx и std :: pair:: вторые неполные ошибки типа? - PullRequest
0 голосов
/ 12 сентября 2018

Я получаю следующие ошибки компиляции при выполнении следующей команды docker в picco, компилятор MPC , каталог и после клонирования MPC-SoK / frameworks github repo :

docker build -t picco .
  • Форвардное объявление 'struct evp_cipher_ctx'
  • 'std :: pair <_T1, _T2> :: second' имеет неполный тип
  • 'EVP_CIPHER_CTXen 'имеет инициализатор, но неполный тип

Я видел много связанных билетов и постов обмена github и стека, относящихся к одной или нескольким из этих конкретных ошибок, и ни один из них фактически не предоставил им работоспособных решений, таких как:

Кажется, что первая и третья ошибки связаны с обновлениями в Openssl, однако я попытался запустить свежую Ubuntu 16.04и 18.04 ВМ с 1.0.1,1.0.2, 1.1.0 и 1.1.1 openssl и в Mac OSX High Sierra с openssl 1.0.2, все с одной и той же точкой отказа и с одинаковыми тремя классами ошибок.

Я также попробовал решение здесь , где я вручную вошел и изменил переменные EVP_CIPHER_CTX на указатели и использовал их связанную функцию освобождения.Это тоже не сработало.

Я хотел бы знать, видел ли кто-нибудь ранее и успешно ли исправлял эти ошибки, и если да, то, что они делали, на какой машине и с какими зависимостями, если это возможно? *

1 Ответ

0 голосов
/ 14 сентября 2018

Глядя на указанное вами хранилище, 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.2 версию OpenSSL, для которой был написан код. Я нашел имя этого 1.0 версионного пакета openssl на этой странице информации о пакете openssl Ubuntu 18.04 .

...