用MinGW编译openssl

9 篇文章 0 订阅

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的目录结构不同导致问题。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值