以前に ubuntu で openssl-1.0.2k をクロスコンパイルし、次のスクリプトを使用して実装しました: #./config --prefix=/opt/openssl --cross-compile-prefix=arm-linux-gnueabihf- no-asm shared
sed -i "s/ -m64//g" Makefile
make
make install
すべての開発環境は svn を通じて制御されます。そのため、config を使用して Makefile ファイルを生成した後、arm コンパイラがサポートしていない m64 オプションをスクリプトを使用して自動的に削除します。 同じ方法を使用して gmssl をコンパイルした後、デバイス上で秘密キーを生成するときにランタイム エラーが発生し、openssl-1.1.1 プレビュー バージョンはコンパイル後に応答を停止します。
多くの調査を行った結果、最終的にその理由が見つかりました。ターゲット プラットフォームの構成には Configure を使用する必要があります。新しいコンパイル スクリプトは次のとおりです:
./Configure --prefix=/opt/openssl --cross-compile-prefix=arm-linux-gnueabihf- no-asm shared linux-armv4 make make install
ARM デバイスであるため、ターゲット プラットフォームはここでは linux-armv4 として構成されています。他のプラットフォームのコンパイル方法も同様です。./Configure --help を使用して、サポートされているすべてのプラットフォームを表示します。
また、arm プラットフォームを指定する場合、サポートされていない m64 オプションは Makefile に表示されないため、削除する必要はありません。
新しいコンパイル方法を使用した後は、gmssl と openssl-1.1.1 の両方が arm デバイスで正常に動作できるようになります。
GmSSL-Go は、GmSSL ライブラリの Go 言語インターフェイス バインディングです。
暗号アルゴリズム、X.509 証明書、SSL プロトコル、Go 言語アプリケーション用エンジンなどの機能を提供します。 。GmSSL-Go は、CGO を使用して、GmSSL の高レベル インターフェイスを Go 言語コンポーネントとしてカプセル化します。これは、GmSSL ライブラリと疎結合された軽量の中間層です。すべての暗号化機能は、基盤となるGmSSLライブラリが提供されています。
GmSSL-Go を使用する理由Go 言語の公式ライブラリには、一般的に使用される暗号アルゴリズム パッケージと SSL プロトコル パッケージが用意されていますが、サードパーティ製の純粋な Go もいくつかあります。プロジェクトに GmSSL-Go を統合した暗号通貨ライブラリには、依然として多くのかけがえのない利点があります: GmSSL-Go は、基礎となる GmSSL ライブラリを通じて各国の暗号化アルゴリズム、証明書、および SSL プロトコルを完全かつ豊富にサポートします。
GmSSL-Go は、国家暗号化標準を満たす U シールドや PCI-E 暗号化カードなどの国内ハードウェア暗号化デバイスを満たすエンジン オブジェクトを通じて、システムのセキュリティ、可用性、パスワード コンプライアンスを提供できます。
GmSSL-Go は、CGO メソッドを使用して GmSSL ライブラリの暗号アルゴリズム実装を呼び出します。純粋な Go 言語実装と比較して、暗号アルゴリズムのパフォーマンス上の利点があります。GmSSL ベンチマークを参照してください。
GmSSL-Go の機能とパフォーマンスは、GmSSL のアップグレードとともに継続的に改善されています。
以上がgolang gmssl がコンパイルに失敗するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。