web-dev-qa-db-ja.com

OpenSSL for x64をどのようにコンパイルしますか?

INSTALL.W64の指示に従った後、2つの問題があります。

  • コードは引き続き「out32」フォルダーに書き込まれます。ワークステーション上のライブラリの32ビットバージョンと64ビットバージョンの両方にリンクできる必要があるため、64ビットバージョンが32ビットライブラリを壊してほしくない。
  • 出力はまだ32ビットです!これは、x64アプリからライブラリにリンクしようとすると、「未解決の外部シンボル」エラーが発生することを意味します。
16
kgriffs

静的ライブラリ(リリースとデバッグの両方)をコンパイルするには、次のことを行う必要があります。

  1. Perlをインストールします- www.activestate.com
  2. 「VisualStudio2008 x64クロスツールコマンドプロンプト」を実行します(注:通常のコマンドプロンプトは機能しません)。
  3. Perlで構成するVC-WIN64Aを構成するno-sharedno-idea
  4. 実行:ms\do_win64a
  5. Ms\nt.makを編集し、出力ディレクトリで「32」を「64」に変更します。
#すべての関心のある出力ディレクトリ
 OUT_D = out64.dbg 
#すべての一時的なマックの出力ディレクトリ
 TMP_D = tmp64.dbg 
#ヘッダーファイルの出力ディレクトリ
 INC_D = inc64 
 INCO_D = inc64\openssl 
  1. Ms\nt.makを編集し、エラーが発生した場合はEX_LIBSからbufferoverflowu.libを削除します。
  2. 実行:nmake -f ms\nt.mak
  3. Ms\do_win64aファイルを編集し、「ml64」と最後の2行を除くすべての行に「デバッグ」を追加します
  4. 実行:ms\do_win64a
  5. 手順4と5を繰り返します
  6. Ms\nt.makファイルを編集し、CFLAGリストに/ Ziを追加してください!
  7. 実行:nmake -f ms\nt.mak
22
kgriffs

1.0.1cソースを使用して、この方法で問題を解決しました。

このブロックを_util/pl/VC-32.pl_行の直前の_$o='\\';_に追加します。

_if ($debug)
    {
    $ssl .= 'd';
    $crypto .= 'd';
    }
_

このブロックを_util/pl/VC-32.pl_のif ($debug)行の直前に追加します。

_if ($FLAVOR =~ /WIN64/)
    {
    $out_def =~ s/32/64/;
    $tmp_def =~ s/32/64/;
    $inc_def =~ s/32/64/;
    }
_

次に、すべての品種を作成します。

_setenv /x86 /release
Perl Configure VC-WIN32  --prefix=build -DUNICODE -D_UNICODE
ms\do_ms
nmake -f ms\ntdll.mak

setenv /x64 /release
Perl Configure VC-WIN64A --prefix=build
ms\do_win64a.bat
nmake -f ms\ntdll.mak

setenv /x86 /debug
Perl Configure debug-VC-WIN32  --prefix=build -DUNICODE -D_UNICODE
ms\do_ms
move /y ms\libeay32.def ms\libeay32d.def
move /y ms\ssleay32.def ms\ssleay32d.def
nmake -f ms\ntdll.mak

setenv /x64 /debug
Perl Configure debug-VC-WIN64A --prefix=build
ms\do_win64a.bat
move /y ms\libeay32.def ms\libeay32d.def
move /y ms\ssleay32.def ms\ssleay32d.def
nmake -f ms\ntdll.mak
_
3
Dan

コナン を使用します。インストールと使用は非常に簡単です。

すぐに使用できるファイルをリクエストできます。たとえば、Linuxx64またはVisualStudio 2012での使用の場合。手順の例は次のとおりです。

conan install OpenSSL/1.0.2g@lasote/stable -s Arch="x86_64" -s build_type="Debug" -s compiler="gcc" -s compiler.version="5.3" -s os="Linux" -o 386="False" -o no_asm="False" -o no_rsa="False" -o no_cast="False" -o no_hmac="False" -o no_sse2="False" -o no_zlib="False" ...

3
Alejandro PC

公式文書によると:

「驚かれるかもしれません。64ビットアーティファクトは実際にout32 *サブディレクトリに出力され、* 32.dllで終わる名前が付けられています。64ビットコンパイルターゲットは、これまでのところ、従来の32ビットWindowsターゲットを段階的に変更しています。多数のコンパイルフラグには「32」というラベルが付いていますが、32ビットターゲットと64ビットターゲットの両方に適用されます。」

したがって、最初の答えはもはや必要ありません。

手順はここにあります:

https://wiki.openssl.org/index.php/Compilation_and_Installation#W64

2
Akumaburn

Cygwinでビルドしている場合は、MSDEVPATHが既にVisual Studioディレクトリに設定されていると仮定して、次のスクリプトを使用できます。

 echo "Building x64 OpenSSL"
 # save the path of the x86 msdev
 MSDEVPATH_x86=$MSDEVPATH
 # and set a new var with x64 one
 MSDEVPATH_x64=`cygpath -u $MSDEVPATH/bin/x86_AMD64`

 # now set vars with the several lib path for x64 in windows mode
 LIBPATH_AMD64=`cygpath -w $MSDEVPATH_x86/lib/AMD64`
 LIBPATH_PLATFORM_x64=`cygpath -w $MSDEVPATH_x86/PlatformSDK/lib/x64`
 # and set the LIB env var that link looks at
 export LIB="$LIBPATH_AMD64;$LIBPATH_PLATFORM_x64"

 # the new path for nmake to look for cl, x64 at the start to override any other msdev that was set previously
 export PATH=$MSDEVPATH_x64:$PATH

 ./Configure VC-WIN64A zlib-dynamic --prefix=$OUT --with-zlib-include=zlib-$ZLIB_VERSION/include --with-zlib-lib=zlib-$ZLIB_VERSION/x64_lib

 # do the deed
 ms/do_win64a.bat
 $MSDEVPATH_x86/bin/nmake -f ms/ntdll.mak  ${1:-install}
1
lrascao

この質問が最初に行われてから、ビルド手順が変更されました。新しい手順は ここ にあります。 PerlとNASMをインストールする必要があり、開発者コマンドPromptを使用する必要があることに注意してください。

0
Ranke

このハウツーを書いている時点で、OpenSSLの最新バージョンは1.1.1aです。

環境:

  • ウィンドウズ10
  • MS Visual Studio 2017

前提条件:

PerlとNASMの両方がPATH環境変数にあることを確認してください。

X64のコンパイル:

  1. X64ネイティブツールのコマンドプロンプトを開く
  2. Perl設定VC-WIN64A--prefix = e:\ projects\bin\OpenSSL\vc-win64a --openssldir = e:\ projects\bin\OpenSSL\SSL
  3. nmake
  4. nmakeテスト
  5. nmakeインストール

手順4はオプションです。

X86のコンパイル:

  1. X86ネイティブツールのコマンドプロンプトを開く
  2. Perl設定VC-WIN32--prefix = e:\ projects\bin\OpenSSL\vc-win32 --openssldir = e:\ projects\bin\OpenSSL\SSL
  3. nmake
  4. nmakeテスト
  5. nmakeインストール

手順4はオプションです。

0
J.Javan