Error de compilación cruzada wsO2 CPP

Estoy usando WSO2 CPP para desarrollar una aplicación que se ejecuta en un procesador ARM. Estoy tratando de compilar de forma cruzada la biblioteca en una computadora PC basada en Linux cuando aparece un error en el momento de la compilación. He configurado WSO2 como:


    export CXXFLAGS="-O2 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -ftree-vectorize -ffast-math -mfloat-abi=softfp"
    export CXXFLAGS=${CXXFLAGS}" -I/home/logic/Logic_BSPs/Linux_3.0/1021559_LogicPD_Linux_BSP_2.0-5p1/rootfs/usr/include"
    export LDFLAGS=" -L/home/logic/Logic_BSPs/Linux_3.0/1021559_LogicPD_Linux_BSP_2.0-5p1/rootfs/usr/lib"

    INSTALL_DIR=/home/logic/Logic_BSPs/Linux_3.0/1021559_LogicPD_Linux_BSP_2.0-5p1/rootfs/usr

    CC=/opt/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi-gcc \
    CXX=/opt/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi-g++ \
    AR=/opt/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi-ar \
    RANLIB=/opt/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi-ranlib \
    ./configure --prefix=${INSTALL_DIR} \
        --build=i686-linux --host=arm-none-linux-gnueabi \
        --target=arm-none-linux-gnueabi --with-apache2=no

En la compilación, el error informado es:

    /opt/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi-gcc -DHAVE_CONFIG_H -I. -I../../../../.. -I../../../../../incluir -I../../../../.. /src/core/transport -I../../../../../src/core/transport/http -I../../../../../src/core /transport/http/sender/libcurl -I../../../../../src/core/description -I../../../../../src/core /contexto -I../../../../../src/core/phaseresolver -I../../../../../src/core/engine -I.. /../../../../src/core/deployment -I../../../../../util/include -I../../../. ./../axiom/include -g -O2 -D_LARGEFILE64_SOURCE -ansi -Wall -Wno-implicit-function-declaration -g -D_GNU_SOURCE -DAXIS2_SVR_MULTI_THREADED -DAXIS2_SSL_ENABLED -MT ssl_stream.lo -MD -MP -MF .deps/ssl_stream. Tpo -c ssl/ssl_stream.c -fPIC -DPIC -o .libs/ssl_stream.o En el archivo incluido de http_client.c:32: ssl/ssl_stream.h:26:25: error: openssl/ssl.h: No such archivo o directorio make[11]: *** [http_client.lo] Error 1 make[11]: *** Esperando trabajos sin terminar.... En archivo incluido de ssl/ssl_stream.c:21: ssl/ssl_stream. h:26:25: error: openssl/ssl.h: No existe tal archivo o directorio En el archivo incluido desde ssl /ssl_stream.c:22: ssl/ssl_utils.h:33: error: se esperaba '=', ',', ';', 'asm' o '__attribute__' antes del token '*' ssl/ssl_utils.h:40: error: esperado '=', ',', ';', 'asm' o '__attribute__' antes de '*' token ssl/ssl_utils.h:49: error: especificadores de declaración esperados o '...' antes de 'SSL_CTX' ssl/ssl_utils.h:50: error: especificadores de declaración esperados o '...' antes de 'SSL' [...]

Parece que la biblioteca con el error no ha sido configurada con la variable CXXFLAGS: como puede ver, las inclusiones en /home/logic/logic no están incluidas en el comando de compilación.

¿Podría proporcionar una solución a este problema?

Gracias y Saludos, Joaquim Duran

preguntado el 22 de mayo de 12 a las 15:05

2 Respuestas

El problema es que no puede encontrar los archivos de inclusión para openssl.

    ssl/ssl_stream.h:26:25: error: openssl/ssl.h: No such file or directory

Primero verifique dónde está instalado openssl para el entorno en el que se está compilando, luego debe decirle al compilador dónde están esos incluidos especificando las rutas de inclusión con los indicadores de compilación '-I'.

Cuando configure las rutas de inclusión, intente usar rutas absolutas en lugar de las rutas relativas largas que tiene con varias rutas '../'. Es más fácil depurar los problemas de ruta incluidos de esta manera.

contestado el 22 de mayo de 12 a las 15:05

Estoy de acuerdo con usted, pero la ruta de inclusión necesaria para encontrar el openssl/ssl.h se especifica utilizando las variables CXXFLAG y CFLAGS, indicadas en el comando 'configurar', pero el comando de compilación, no hay una ruta de inclusión que haya especificado . Parece que la 'configuración' principal no está propagando CXXFLAGS ni CFLAGS correctamente al archivo de 'configuración' de las bibliotecas. - user1410383

@ user1410383, eso suena como cuál es el problema entonces. Mire a través de la salida de ayuda de configuración, normalmente hay opciones de línea de cmd para especificar dónde se instalan ciertos paquetes, con suerte habrá una opción para openssl. - Brady

Lo sentimos, pero no hay opción para especificar la ruta de inclusión de openssl. Gracias por tus sugerencias. - user1410383

@ user1410383, nunca me gustó la creación automática :( Es posible que tenga que investigar un poco y ver por qué no está tomando la configuración de la línea de cmd de CFLAG. Y, en el peor de los casos, edite los archivos MAKE generados a mano. - Brady

Yo tuve el mismo problema. Para mí fueron dos cosas. Necesitaba especificar CFLAGS, no solo CXXFLAGS. Además, usé un ~ en mi camino para señalar a casa, lo que no le gustó al proceso de compilación por alguna razón.

Respondido 23 ago 13, 18:08

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.