windows平臺編譯openssl(64位MT版本)
1 準備工作
1.1 下載openssl1.1.0g
地址: https://github.com/openssl/openssl/tree/OpenSSL_1_1_0g
1.2 安裝perl
我使用的strawberry 版本號v5.28.2
安裝好後perl -v可以檢視版本號
安裝完strawberry後開啟的cmd才能使用perl命令(新增加的環境變數對已經開啟的cmd不生效)
1.3 修改Config.pm
修改C:\Perl64\site\lib\ActivePerl下的Config.pm的"sub _warn"過程,修改後程式碼如下:
#
my $console;
sub _warn {
#
my($msg) = @_;
#
unless (-t STDOUT) {
#
print "\n$msg\n";
#
return;
#
}
#
require Win32::Console;
#
unless ($console) {
#
$console = Win32::Console->new(Win32::Console::STD_OUTPUT_HANDLE());
#
}
#
my($col,undef) = $console->Size;
#
print "\n";
#
my $attr = $console->Attr;
#
$console->Attr($Win32::Console::FG_RED | $Win32::Console::BG_WHITE);
#
for (split(/\n/, "$msg")) {
#
$_ .= " " while length() < $col-1;
#
print "$_\n";
#
}
#
$console->Attr($attr);
#
print "\n";
}
2 編譯
2.1 配置
開啟 適用於VS2015的x64本機工具命令提示
cd到openssl目錄cd到openssl目錄 cd g:\openssl-1.1.0g
執行 perl Configure VC-WIN64A no-asm --prefix=g:\build\openssl\win64a
VC-WIN64A表示生成x64的Release庫。debug-VC-WIN64A、VC-WIN32、debug-VC-WIN32分別表示生成x64的Debug庫、x86的Release和Debug庫。
no-asm 不使用匯編加速編譯
g:\build\openssl\win64a輸出路徑
注意:此時makefile檔案中預設使用/MD,如要使用/MT,可搜尋修改makefile檔案中的"/MD"為"/MT"後,再繼續後續步驟。
2.2 編譯
執行nmake
執行nmake test
若報錯:執行 nmake /I test 就能夠編譯通過了(雖然還是會報 error),但是編譯出來的可執行檔案是可以使用的
執行nmake install
同一個目錄下編譯不同版本(win32|64|release|debug)時需要先nmake clean