How do you compile OpenSSL for x64?

后端 未结 8 877
粉色の甜心
粉色の甜心 2020-12-03 01:48

After following the instructions in INSTALL.W64 I have two problems:

  • The code is still written to the \"out32\" folder. I need to be able to link to both 32-bi
相关标签:
8条回答
  • 2020-12-03 02:07

    You can also use MSYS+mingw-w64:

    1) download and extract msys to C:\msys
    2) download and extract mingw-w64 to c:\mingw64
    3) run msys postinstall script. When it asks for your mingw installation, point it to C:\mingw64\bin
    4) Extract an openssl daily snapshot (1.0.0 release has a bug). In the source dir run configure mingw64
    make
    make check
    make install
    5) openssl is installed to /local/

    0 讨论(0)
  • 2020-12-03 02:09

    The build instructions have changed since this question was originally asked. The new instructions can be found here. Note that you will need to have perl and NASM installed, and you will need to use the developer command prompt.

    0 讨论(0)
  • 2020-12-03 02:09

    At the time of writing this how-to the most recent version of OpenSSL is 1.1.1a.

    Environment:

    • Windows 10
    • MS Visual Studio 2017

    Prerequisites:

    • Install ActivePerl - Community edition is fine
    • Install NASM

    Make sure both Perl and NASM are in PATH environment variable.

    Compiling x64:

    1. Open x64 Native Tools Command Prompt
    2. perl Configure VC-WIN64A --prefix=e:\projects\bin\OpenSSL\vc-win64a --openssldir=e:\projects\bin\OpenSSL\SSL
    3. nmake
    4. nmake test
    5. nmake install

    Step 4 is optional.

    Compiling x86:

    1. Open x86 Native Tools Command Prompt
    2. perl Configure VC-WIN32 --prefix=e:\projects\bin\OpenSSL\vc-win32 --openssldir=e:\projects\bin\OpenSSL\SSL
    3. nmake
    4. nmake test
    5. nmake install

    Step 4 is optional.

    0 讨论(0)
  • 2020-12-03 02:16

    To compile the static libraries (both release and debug), this is what you need to do:

    1. Install Perl - www.activestate.com
    2. Run the "Visual Studio 2008 x64 Cross Tools Command Prompt" (Note: The regular command prompt WILL NOT WORK.)
    3. Configure with perl Configure VC-WIN64A no-shared no-idea
    4. Run: ms\do_win64a
    5. EDIT ms\nt.mak and change "32" to "64" in the output dirs:
        # The output directory for everything intersting
        OUT_D=out64.dbg
        # The output directory for all the temporary muck
        TMP_D=tmp64.dbg
        # The output directory for the header files
        INC_D=inc64
        INCO_D=inc64\openssl
    
    1. EDIT ms\nt.mak and remove bufferoverflowu.lib from EX_LIBS if you get an error about it.
    2. Run: nmake -f ms\nt.mak
    3. EDIT the ms\do_win64a file and ADD "debug" to all lines, except the "ml64" and the last two lines
    4. Run: ms\do_win64a
    5. Repeat steps 4 and 5
    6. EDIT the ms\nt.mak file and ADD /Zi to the CFLAG list!
    7. Run: nmake -f ms\nt.mak
    0 讨论(0)
  • 2020-12-03 02:16

    Use Conan. It is very simple to install and use.

    You can request the files ready for use. For example for Linux x64 or usage with Visual Studio 2012. Here a sample instruction:

    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" ...

    0 讨论(0)
  • 2020-12-03 02:25

    I solved the problem this way, using the 1.0.1c source:

    Add this block to util/pl/VC-32.pl, just before the $o='\\'; line.

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

    Add this block to util/pl/VC-32.pl, just before the if ($debug) line.

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

    Then build all varieties:

    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
    
    0 讨论(0)
提交回复
热议问题