Pregunta

Estoy usando una biblioteca estática de terceros en mi proyecto C ++ que depende de libssl versión 0.9.7a. Debido a varias razones, la versión libssl que usó mi proyecto es 0.9.8e.

Todo funcionaba bien, hasta que el tercero realizó un cambio reciente en su biblioteca estática. No pude compilar con éxito mi aplicación cuando incluía esta nueva versión de la biblioteca estática. La versión anterior se compila bien.

No estoy muy familiarizado con estas dependencias de la biblioteca y su compatibilidad con versiones anteriores. Nos dijeron que debemos usar la versión sugerida por el tercero. Solo quiero saber si esa es realmente la razón. OMI, supongo que debería ser compatible con versiones anteriores, ¿no?

Cualquier dirección para solucionar este problema es muy apreciada.

El siguiente es el error de compilación que recibo:

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

El mensaje de error dice que no existe un archivo como opensslconf-i386.h, pero sí está presente.

¿Alguna idea de lo que está pasando?

¡Gracias por tu tiempo!

¿Fue útil?

Solución

El preprocesador C no encuentra el archivo opensslconf-i386.h, por lo que debe averiguar por qué falla. Recibió una advertencia del compilador sobre el uso de una opción obsoleta (y recomienda una solución): hágalo.

OK, usted dice que el archivo está presente: ¿dónde está y cuáles son los permisos? ¿Cómo se incluye en opensslconf.h? ¿Cómo es esa línea diferente de cualquier otro encabezado OpenSSL que se incluye? ¿Cuáles son las opciones '-I' que está utilizando aparte de '-I-' en desuso?

En esta etapa, diría que tiene una instalación defectuosa o una línea de comando de bola extraña.

Y el título de la pregunta no está ... obviamente relacionado con el cuerpo de la pregunta.

  • A nivel operativo, sí, los dos interfunciones para la mayoría de los propósitos.
  • En el nivel de compilación, sí, los dos son básicamente compatibles (lo que funcionó en 0.9.7a debería funcionar con 0.9.8e).
  • A nivel interno y de configuración, habrá pequeñas diferencias; puede haber cifras o modos adicionales admitidos por la versión más reciente, por ejemplo.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top