2014年12月9日 星期二

openSSL 1.0.1e 編譯

0. 現成編好的
http://slproweb.com/products/Win32OpenSSL.html

1. 必要條件
openssl source code (使用版本為 openssl-1.0.1e)
activeperl
NASM (非必要, 有會比較快, 快在哪? ...阿栽.)
Microsoft Visual Studio (這邊用的為 vs2005)

2. 編譯環境
安裝 activeperl, NASM, 將 NASM 安裝路徑加入系統path裡

開啟 程式集->Microsoft Visual Studio 2005->Visual Studio Tools->Visual Studio 2005 Command Prompt
(編譯X64 就開啟 Visual Studio 2005 x64 Win64 Command Prompt, IA64依此類推)
* 2005 64bit compiler 預設是沒安裝的, 要用記得安裝一下

3. 移動到目錄
>cd D:\openssl-1.0.1e

4. 指定編譯類型
X86
>perl Configure VC-WIN32 no-asm
or
>perl Configure VC-WIN32

X64
>perl Configure VC-WIN64A no-asm

IA64
>perl Configure VC-WIN64I no-asm

5. 製造編譯用 *.mak 檔
X86
>ms\do_ms.bat
or
>ms\do_nasm.bat

X64
>ms\do_win64a.bat

IA64
>ms\do_win64i.bat

6. 編譯
先修改 ms\ntdll.mak , 將 CFLAG= /MD ... 改為 CFLAG= /MT ...
nmake -f ms\ntdll.mak   動態連結
or
nmake -f ms\nt.mak      靜態連結

7. 產出
D:\openssl-1.0.1e\outdll32
or
D:\openssl-1.0.1e\out32

ssleay32.lib    實現SSL協議
libeay32.lib    實現各種演算法

8. 懶人用 batch

REM VS2005 X86
@echo off

IF NOT EXIST "%VS80COMNTOOLS%vsvars32.bat" (
ECHO can not find visual studio 2005
PAUSE
GOTO :EOF
)

call "%VS80COMNTOOLS%vsvars32.bat"

SET OPENSSLDIR=.\openssl-1.0.1e
SET OUTPUTDIR=.\OpenSSL_VC2005_X86

CD %OPENSSLDIR%
perl Configure VC-WIN32
start /wait cmd.exe /c .\ms\do_nasm.bat
nmake -f .\ms\nt.mak
nmake -f .\ms\nt.mak clean
CD ..

IF EXIST %OUTPUTDIR% (
DEL %OUTPUTDIR%\libeay32.lib
DEL %OUTPUTDIR%\ssleay32.lib
DEL %OUTPUTDIR%\openssl.exe
) else (
MKDIR %OUTPUTDIR%
)

COPY %OPENSSLDIR%\out32\libeay32.lib %OUTPUTDIR%\libeay32.lib
COPY %OPENSSLDIR%\out32\ssleay32.lib %OUTPUTDIR%\ssleay32.lib
COPY %OPENSSLDIR%\out32\openssl.exe  %OUTPUTDIR%\openssl.exe

DEL %OPENSSLDIR%\out32\libeay32.lib
DEL %OPENSSLDIR%\out32\ssleay32.lib
DEL %OPENSSLDIR%\out32\openssl.exe


-------------------------------------------------------------------------------------------------------------

REM VS2005 X64
@echo off

SET CompilerBat="C:\Program Files\Microsoft Visual Studio 8\VC\bin\amd64\vcvarsamd64.bat"
IF EXIST %CompilerBat% (
CALL %CompilerBat%
GOTO BuildProject
}

SET CompilerBat="C:\Program Files (x86)\Microsoft Visual Studio 8\VC\bin\amd64\vcvarsamd64.bat"
IF EXIST %CompilerBat% (
CALL %CompilerBat%
GOTO BuildProject
)

ECHO can not find visual studio 2005
PAUSE
GOTO :EOF

:BuildProject

SET OPENSSLDIR=.\openssl-1.0.1e
SET OUTPUTDIR=.\OpenSSL_VC2005_X64

CD %OPENSSLDIR%
perl Configure VC-WIN64A no-asm
start /wait cmd.exe /c .\ms\do_win64a.bat
nmake -f .\ms\nt.mak
nmake -f .\ms\nt.mak clean
CD ..

IF EXIST %OUTPUTDIR% (
DEL %OUTPUTDIR%\libeay32.lib
DEL %OUTPUTDIR%\ssleay32.lib
DEL %OUTPUTDIR%\openssl.exe
) else (
MKDIR %OUTPUTDIR%
)

COPY %OPENSSLDIR%\out32\libeay32.lib %OUTPUTDIR%\libeay32.lib
COPY %OPENSSLDIR%\out32\ssleay32.lib %OUTPUTDIR%\ssleay32.lib
COPY %OPENSSLDIR%\out32\openssl.exe  %OUTPUTDIR%\openssl.exe

DEL %OPENSSLDIR%\out32\libeay32.lib
DEL %OPENSSLDIR%\out32\ssleay32.lib
DEL %OPENSSLDIR%\out32\openssl.exe 


-------------------------------------------------------------------------------------------------------------

沒有留言:

張貼留言