Вопрос

В своем проекте на C++ я использую стороннюю статическую библиотеку, которая зависит от libssl версии 0.9.7a.По разным причинам в моем проекте использовалась версия libssl 0.9.8e.

Все работало нормально, пока третья сторона не внесла недавние изменения в свою статическую библиотеку.Мне не удалось успешно скомпилировать свое приложение, когда оно включало новую версию статической библиотеки.Старая версия компилируется нормально.

Я не очень знаком с этими зависимостями библиотек и их обратной совместимостью.Нам сказали, что мы должны использовать версию, предложенную третьей стороной.Я просто хочу знать, действительно ли это причина.ИМХО, я думаю, это должно быть обратно совместимо, не так ли?

Любые указания по устранению этой проблемы очень ценятся.

Ниже приводится ошибка компиляции, которую я получаю:

cc1plus: note: obsolete option -I- used, please use -iquote instead

In file included from /usr/include/openssl/e_os2.h:56,
                 from /usr/include/openssl/ssl.h:173,
                 from MyClass.cpp:28:

/usr/include/openssl/opensslconf.h:13:30: error: opensslconf-i386.h: No such file or directory
/usr/include/openssl/bn.h:288: error: expected ';' before '*' token
/usr/include/openssl/bn.h:304: error: 'BN_ULONG' does not name a type
/usr/include/openssl/bn.h:407: error: 'BN_ULONG' was not declared in this scope
/usr/include/openssl/bn.h:450: error: 'BN_ULONG' does not name a type
/usr/include/openssl/bn.h:451: error: 'BN_ULONG' does not name a type
/usr/include/openssl/bn.h:452: error: 'BN_ULONG' has not been declared
/usr/include/openssl/bn.h:453: error: 'BN_ULONG' has not been declared
/usr/include/openssl/bn.h:454: error: 'BN_ULONG' has not been declared
/usr/include/openssl/bn.h:455: error: 'BN_ULONG' has not been declared
/usr/include/openssl/bn.h:456: error: 'BN_ULONG' does not name a type
/usr/include/openssl/bn.h:471: error: 'BN_ULONG' has not been declared
/usr/include/openssl/bn.h:764: error: 'BN_ULONG' does not name a type
/usr/include/openssl/bn.h:765: error: 'BN_ULONG' does not name a type
/usr/include/openssl/bn.h:766: error: variable or field 'bn_sqr_words' declared void
/usr/include/openssl/bn.h:766: error: 'BN_ULONG' was not declared in this scope
/usr/include/openssl/bn.h:766: error: 'rp' was not declared in this scope
/usr/include/openssl/bn.h:766: error: expected primary-expression before 'const'
/usr/include/openssl/bn.h:766: error: expected primary-expression before 'int'
/usr/include/openssl/bn.h:767: error: 'BN_ULONG' does not name a type
/usr/include/openssl/bn.h:768: error: 'BN_ULONG' does not name a type
/usr/include/openssl/bn.h:769: error: 'BN_ULONG' does not name a type
/usr/include/openssl/ssl3.h:303: error: 'PQ_64BIT' does not name a type
/usr/include/openssl/pqueue.h:73: error: 'PQ_64BIT' does not name a type
/usr/include/openssl/pqueue.h:80: error: 'PQ_64BIT' was not declared in this scope
/usr/include/openssl/pqueue.h:80: error: expected primary-expression before 'void'
/usr/include/openssl/pqueue.h:89: error: 'PQ_64BIT' has not been declared
/usr/include/openssl/dtls1.h:92: error: 'PQ_64BIT' does not name a type
/usr/include/openssl/dtls1.h:94: error: 'PQ_64BIT' does not name a type

В сообщении об ошибке говорится, что такого файла, как opensslconf-i386.h, нет, но он действительно присутствует.

Есть идеи, что происходит не так?

Спасибо за ваше время!

Это было полезно?

Решение

Препроцессор C не находит файл opensslconf-i386.h, поэтому вам нужно выяснить, почему это не удается.Вы получили предупреждение от компилятора об использовании устаревшей опции (и он рекомендует ее исправить) — сделайте это.

ОК - вы говорите, что файл присутствует:где он находится и какие у него разрешения?Как он включается в opensslconf.h?Чем эта строка отличается от любых других включенных заголовков OpenSSL.Какие параметры «-I» вы используете, кроме устаревшего «-I-»?

На этом этапе я бы сказал, что у вас либо неисправная установка, либо странная командная строка.

И название вопроса...явно не связан с телом вопроса.

  • Да, на оперативном уровне они взаимодействуют для большинства целей.
  • На уровне компиляции да, они в основном совместимы (то, что работало в 0.9.7a, должно работать и в 0.9.8e).
  • На внутреннем уровне и уровне конфигурации будут небольшие различия;Например, в более поздней версии могут поддерживаться дополнительные шифры или режимы.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top