您的位置:首页 > 运维架构

用MinGW编译openssl

2010-05-16 15:24 344 查看
1. Download
http://openssl.org/source/
Get openssl-1.0.0.tar.gz.
http://www.activestate.com/activeperl/downloads
Get ActivePerl msi installer.
http://sourceforge.net/projects/mingw/files/
Get msysCORE-1.0.14-1-msys-1.0.14-bin.tar.lzma and gzip-1.3.12-1-msys-1.0.11-bin.tar.lzma. Unpack to C:/MSYS.

Follow C:/MSYS/share/doc/MSYS/msysCORE-1.0.14-1-msys-RELEASE_NOTES.txt and get packages that meet the “Build requirements”, unpack to MSYS or MinGW directory accordingly.

2. Prepare

Install ActivePerl.

Run C:/MSYS/postinstall/pi.bat for MSYS post installation.

Run C:/MSYS/msys.bat.

因为openssl-1.0.0.tar.gz中包含了符号链接文件,如果用7-Zip解压可能会出现大小为0字节的文件,所以应在MSYS中解压:

cd /d/download/tool/dev

tar -xvzf openssl-1.0.0.tar.gz

修改cms-test.pl中影响后续"make test"步骤的问题。

Modify openssl-1.0.0/test/cms-test.pl:

--- cms-test.pl 2009-11-27 05:12:12 +0800

+++ cms-test-new.pl 2010-05-16 14:15:38 +0800

@@ -56,7 +56,8 @@

my $ossl_path;

if ( -f "../apps/openssl$ENV{EXE_EXT}" ) {

- $ossl_path = "../util/shlib_wrap.sh ../apps/openssl";

+# $ossl_path = "../util/shlib_wrap.sh ../apps/openssl";

+ $ossl_path = "../apps/openssl";

}

elsif ( -f "..//out32dll//openssl.exe" ) {

$ossl_path = "..//out32dll//openssl.exe";

@@ -382,14 +383,20 @@

$rscmd =~ s/-stream//;

$rvcmd =~ s/-stream//;

}

- system("$scmd$rscmd 2>cms.err 1>cms.out");

+ #print("DEBUG: $scmd$rscmd 2>cms.err 1>cms.out/n");

+ #system("$scmd$rscmd 2>cms.err 1>cms.out");

+ system("$scmd$rscmd");

if ($?) {

+ #print("DEBUG: system() returned $?/n");

+ #system("$scmd$rscmd");

+ #print("DEBUG: new system() returned $?/n");

print "$tnam: generation error/n";

$$rv++;

exit 1 if $halt_err;

next;

}

- system("$vcmd$rvcmd 2>cms.err 1>cms.out");

+ #system("$vcmd$rvcmd 2>cms.err 1>cms.out");

+ system("$vcmd$rvcmd");

if ($?) {

print "$tnam: verify error/n";

$$rv++;

3. Compile

cd openssl-1.0.0

./config -t

./config threads shared no-capieng

make depend

make

make test

make install

因为目前MinGW版本的wincrypt.h头文件还未同步某些Windows CryptoAPI新特性,所以要在config时使用no-capieng选项防止编译相关代码。另外,要注意config时不要使用--prefix选项,避免因为MSYS与Windows的目录结构不同导致问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: