Совместима ли версия 0.9.8e libssl с 0.9.7a? - PullRequest
1 голос
/ 27 октября 2009

В моем проекте C ++ используется сторонняя статическая библиотека, которая зависит от версии 0.9.7a libssl. По разным причинам используемая моим проектом версия 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, нет, но он действительно присутствует.

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

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

1 Ответ

3 голосов
/ 27 октября 2009

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

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

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

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

  • На оперативном уровне, да, два взаимодействия для большинства целей.
  • Да, на уровне компиляции они в основном совместимы (то, что работало в 0.9.7a, должно работать с 0.9.8e).
  • На внутреннем уровне и уровне конфигурации будут небольшие отличия; например, более поздние версии могут поддерживать дополнительные шифры или режимы.
...