0

WSO2 CPP を使用して、ARM プロセッサで実行されるアプリケーションを開発しています。コンパイル時にエラーが発生したときに、Linux ベースの PC コンピューターでライブラリをクロスコンパイルしようとしています。WSO2 を次のように構成しました。


    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

コンパイル時に報告されるエラーは次のとおりです。

    /opt/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi-gcc -DHAVE_CONFIG_H -I. -I../../../../.. -I../../../../../include -I../../../../.. /src/core/transport -I../../../../../src/core/transport/http -I../../../../../src/core /transport/http/sender/libcurl -I../../../../../src/core/description -I../../../../../src/core /context -I../../../../../src/core/phaseresolver -I../../../../../src/core/engine -I.. /../../../../src/core/配置 -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
    http_client.c:32 からインクルードされたファイル:
    ssl/ssl_stream.h:26:25: エラー: openssl/ssl.h: そのようなファイルまたはディレクトリはありません
    make[11]: *** [http_client.lo] エラー 1
    make[11]: *** 未完成のジョブを待っています....
    ssl/ssl_stream.c:21 からインクルードされたファイル:
    ssl/ssl_stream.h:26:25: エラー: openssl/ssl.h: そのようなファイルまたはディレクトリはありません
    ssl/ssl_stream.c:22 からインクルードされたファイル:
    ssl/ssl_utils.h:33: エラー: '*' トークンの前に '='、','、';'、'asm' または '__attribute__' が必要です
    ssl/ssl_utils.h:40: エラー: '*' トークンの前に '='、','、';'、'asm' または '__attribute__' が必要です
    ssl/ssl_utils.h:49: エラー: 'SSL_CTX' の前に宣言指定子または '...' が必要です
    ssl/ssl_utils.h:50: エラー: 'SSL' の前に宣言指定子または '...' が必要です
[...]

エラーのあるライブラリは CXXFLAGS 変数で構成されていないようです: ご覧のとおり、/home/logic/logic へのインクルードはコンパイル コマンドに含まれていません。

この問題の修正を提供していただけますか?

よろしくお願いいたします。 ジョアキム・デュラン

4

2 に答える 2

0

問題は、openssl のインクルード ファイルが見つからないことです。

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

最初に、コンパイル対象の環境で openssl がインストールされている場所を確認してから、「-I」コンパイル フラグを使用してインクルード パスを指定することにより、それらのインクルードがどこにあるかをコンパイラに伝える必要があります。

インクルード パスを構成するときは、複数の '../' パスがある長い相対パスではなく、絶対パスを使用するようにしてください。この方法でインクルード パスの問題を簡単にデバッグできます。

于 2012-05-22T14:51:31.347 に答える