Question

J'utilise une bibliothèque statique tierce dans mon projet C ++ qui dépend de la version 0.9.7a de libssl. Pour diverses raisons, la version de libssl utilisée par mon projet est 0.9.8e.

Tout fonctionnait bien jusqu'à ce que la tierce partie apporte une modification récente à sa bibliothèque statique. Je n'ai pas réussi à compiler mon application avec la nouvelle version de la bibliothèque statique. L’ancienne version compile bien.

Je ne connais pas très bien ces dépendances et leur compatibilité avec les versions antérieures. On nous a dit que nous devions utiliser la version suggérée par le tiers. Je veux juste savoir si c'est vraiment la raison. OMI, je suppose que cela devrait être compatible avec les versions antérieures, non?

Toutes les instructions permettant de résoudre ce problème sont très appréciées.

Voici l'erreur de compilation que je reçois:

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

Le message d'erreur indique qu'il n'existe aucun fichier tel que opensslconf-i386.h, mais qu'il existe bel et bien.

Avez-vous une idée de ce qui ne va pas?

Merci pour votre temps!

Était-ce utile?

La solution

Le préprocesseur C ne trouve pas le fichier opensslconf-i386.h - vous devez donc savoir pourquoi il échoue. Le compilateur vous avertit d'utiliser une option obsolète (et il recommande une solution) - faites-le.

OK - vous dites que le fichier est présent: où se trouve-t-il et quelles sont ses autorisations? Comment est-il inclus par opensslconf.h? En quoi cette ligne est-elle différente des autres en-têtes OpenSSL inclus? Quelles sont les options '-I' que vous utilisez autres que les options obsolètes '-I -'?

À ce stade, je dirais que votre installation est défectueuse ou que votre ligne de commande est inhabituelle.

Et le titre de la question est ... pas manifestement lié au corps de la question.

  • Au niveau opérationnel, oui, les deux interfonctionnements pour la plupart des buts.
  • Au niveau de la compilation, oui, les deux sont fondamentalement compatibles (celui qui fonctionnait dans 0.9.7a devrait fonctionner avec 0.9.8e).
  • Au niveau interne et au niveau de la configuration, il y aura de petites différences; il peut y avoir des chiffrements supplémentaires ou des modes supportés par la version plus récente, par exemple.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top