用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的目录结构不同导致问题。
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的目录结构不同导致问题。
相关文章推荐
- 利用openssl管理证书及SSL编程第3部分:将MinGW编译的openssl dll导出def和lib供MSVC使用
- Windows7下使用mingw编译openssl
- win7平台下MinGW编译openssl
- MinGW编译OpenSSL
- windows & gcc & mingw & mysy 编译 openssl
- openssl-1.0.1用mingw编译
- MingW下编译openssl
- windows下rabbitmq-c编译(带openssl、无需MinGW)
- MinGW下编译openssl, json-c
- 在Windows下用MinGW编译OpenSSL,及OpenSSL静态链接库libcrypto.a使用问题
- windows下 Mingw (gcc)编译openssl
- MinGW与编译libcurl(附加openssl,zlib,libssh)
- Openssl - Static libraries (w32, mingw) 以及对Qt静态编译时的设置
- MinGW编译支持openssl-1.0.0a的libcurl-7.21.3
- openssl 0.9.8k在mingw中的编译
- 使用mingw 对libcURL,openSSL,zLib交叉编译
- 使用mingw 对libcURL,openSSL,zLib交叉编译
- 使用mingw编译支持openssl 的 libcurl(windows下)
- 编译openssl-0.9.8a,用mingw,需要修改一下makefile
- MinGW下编译openssl