[クロスコンパイル1] openssl-1.1.1コンパイル

インジェニックプラットフォーム

1.ソースコードパッケージをダウンロードします

https://www.openssl.org/source/old/1.1.1/

https://www.openssl.org/source/openssl-1.1.1ソースコードダウンロードます

2.カタログを入力します

# tar zxvf openssl-1.1.1.tar.gz  
# cd openssl-1.1.1

3.実行

./config no-asm no-sse2 no-ssl3 no-zlib no-bf no-camellia no-cast no-cms no-comp no-dso no-idea  no-md2 no-mdc2 no-rc2 no-rc5 no-ripemd no-seed --prefix=$(pwd)/ISVP -fPIC --cross-compile-prefix=/opt/mips-gcc472-glibc216-64bit/bin/mips-linux-uclibc-gnu-

    パラメータの説明:

    no-asm:クロスコンパイル中のコンパイルプロセスを高速化するためにアセンブリコードを使用しません。その理由は、そのアセンブリコードがarm形式をサポートしていないためです。
    no-async:クロスコンパイルツールチェーンはGNU Cのucontextライブラリを提供しません–prefix
    =:インストールパス。コンパイルしてインストールした後、bin、lib、include、その他のフォルダがあります
    –cross-compile-prefix =:クロスコンパイルツール 

4、作る

この時点で[エラー]が発生します:

mips-linux-gnu-gcc:エラー:認識されないコマンドラインオプション '-m64'

解決策は、メイクファイルを開きます

-m64オプションを検索して削除します。2つの場所があります

NF_CFLAGS = -pthread -m64

CNF_CXXFLAGS = -std = c ++ 11 -pthread -m64

再度makeを実行した後

[エラーの報告]は次のとおりです。

./libcrypto.so: undefined reference to `getcontext'
./libcrypto.so: undefined reference to `setcontext'
./libcrypto.so: undefined reference to `makecontext'
collect2: error: ld returned 1 exit status

 

主な理由は次のとおりです。mipsel-linuxはGNUCのucontextライブラリを提供していません

解決策:構成構成にno-asyncを追加します

./config no-asm no-async no-sse2 no-ssl3 no-zlib no-async no-bf no-camellia no-cast no-cms no-comp no-dso no-idea no-md2 no-mdc2 no- rc2 no-rc5 no-ripemd no-seed --prefix = $(pwd)/ ISVP -fPIC --cross-compile-prefix = / opt / mips-gcc472-glibc216-64bit / bin / mips-linux-uclibc-gnu -

5.make && make install

6.正常にコンパイルします

 

おすすめ

転載: blog.csdn.net/Swallow_he/article/details/108361551