Domanda

Sto usando una libreria statica di terze parti nel mio progetto C ++ che ha una dipendenza da libssl versione 0.9.7a. Per vari motivi, la versione di libssl utilizzata dal mio progetto è 0.9.8e.

Tutto funzionava bene, fino a quando la terza parte ha apportato una recente modifica alla propria libreria statica. Non sono stato in grado di compilare correttamente la mia applicazione quando includeva questa nuova versione della libreria statica. La vecchia versione viene compilata correttamente.

Non ho molta familiarità con queste dipendenze della libreria e la loro retrocompatibilità. Ci è stato detto che dobbiamo usare la versione suggerita dalla terza parte. Voglio solo sapere se questo è davvero il motivo. IMO, suppongo che dovrebbe essere retrocompatibile, non è vero?

Ogni direzione con la risoluzione di questo problema è molto apprezzata.

Quello che segue è l'errore di compilazione che sto ricevendo:

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

Il messaggio di errore indica che non esiste un file come opensslconf-i386.h, ma è effettivamente presente.

Qualche idea di cosa non vada?

Grazie per il tuo tempo!

È stato utile?

Soluzione

Il pre-processore C non trova il file opensslconf-i386.h, quindi è necessario scoprire perché non funziona. Hai ricevuto un avviso dal compilatore sull'utilizzo di un'opzione obsoleta (e ti consiglia una correzione). Fallo.

OK - dici che il file è presente: dove si trova e quali sono le autorizzazioni su di esso? Come viene incluso da opensslconf.h? In che modo quella linea è diversa da qualsiasi altra intestazione OpenSSL inclusa. Quali sono le opzioni '-I' che stai utilizzando oltre a '-I-' obsoleto?

A questo punto, direi che hai un'installazione difettosa o una riga di comando a palla dispari.

E il titolo della domanda non è ... ovviamente correlato al corpo della domanda.

  • A livello operativo, sì, le due interwork per la maggior parte degli scopi.
  • A livello di compilation, sì, i due sono sostanzialmente compatibili (quello che ha funzionato in 0.9.7a dovrebbe funzionare con 0.9.8e).
  • A livello interno e di configurazione, ci saranno piccole differenze; potrebbero esserci altri codici o modalità supportati dalla versione più recente, ad esempio.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top