Я пытаюсь собрать мою библиотеку c ++ (которая зависит от facebook / folly ) с помощью gcc7.Некоторые важные моменты, на которые следует обратить внимание
- Ранее я использовал gcc 4.8 для создания этой библиотеки
- Поскольку в gcc 5.2 появилась несовместимость ABI - я построил глупость из источника (и всех других зависимыхбиблиотеки, такие как glog и т. д.) с gcc 7 - и я использую обновленные библиотеки и общие объекты.
- Моя библиотека использует openssl 1.1 (даже ранее, когда она создавалась с помощью gcc 4.8), где глупо (используемая мной версия глупости) использует openssl 1.0.2
Даже при несовместимости версий openssl сборка моей библиотеки прошла бы нормально с gcc 4.8 со следующим предупреждением
/usr/bin/ld: warning: libssl.so.10, needed by /home/<username>/folly/folly/1000.37.2.1/lib/libfolly.so, may conflict with libssl.so.1.1
Я получаю точно такое же предупреждение и с gcc 7, но теперь моя сборка завершается с ошибкой
/usr/bin/ld: /home/<username>/folly/folly/1000.37.2.1/lib/libfolly.a(SSLSessionCacheManager.o): undefined reference to symbol 'SSL_CTX_get_ex_new_index@@libssl.so.10'
/usr/lib64/libssl.so.10: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
Я пытался исследовать эту проблему в отношении DSO, отсутствующего в командной строке - но решения, упомянутые в других вопросах, похоже, не в моем случае.
Есть 3 вопроса, которые я ищуответ здесь
- Может ли несовместимость версий openssl быть причиной сбоя сборки?
- Почему сборка завершится успешно в gcc 4.8, но не удалась в gcc 7?
- есть способ решить эту проблему без обновления версии openssl в глупости (мне придется внести много изменений для этого - что потребует изменений кода с моей стороны).Моя библиотека использует только
openssl/md5.h