shootingstars

菩提本无树,明镜亦非台。本来无一物,何处惹尘埃。尘埃乃虚幻,亦何惧之来?

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  30 随笔 :: 0 文章 :: 48 评论 :: 0 引用
如何在Windows下编译OpenSSL (Vs2005使用Vc8的cl编译器)
1、安装ActivePerl//初始化的时候,需要用到perl解释器
2、使用VS2005下的Visual Studio 2005 Command Prompt进入控制台模式(这个模式会自动设置各种环境变量)
3、解压缩openssl的包,进入openssl的目录
4、perl configure VC-WIN32
尽量在这个目录下执行该命令,否则找不到Configure文件,或者指定完整的Configure文件路径。
5、ms\do_ms
在解压目录下执行ms\do_ms命令
6、nmake -f ms\ntdll.mak

编译后
在openssl解压目录下执行,完成编译后。输出的文件在out32dll里面,包括应用程序的可执行文件、lib文件和dll文件

注意:在运行第五步时,cl编译器会抱怨说.\crypto\des\enc_read.c文件的read是The POSIX name for this item is deprecated(不被推荐的),建议使用_read。呵呵,我可不想将OpenSSL中的所有的read函数修改为_read。再看cl的错误代码error C2220,于是上MSDN上查找:
warning treated as error - no object file generated
/WX tells the compiler to treat all warnings as errors. Since an error occurred, no object or executable file was generated.
是由于设置了/WX选项,将所有的警告都作为错误对待,所以。。。

于是打开OpenSSL目录下的MS目录下的ntdll.mak文件,将CFLAG的/WX选项去掉,存盘。。。
继续执行nmake -f ms\ntdll.mak

于是成功。。。
(我下载的是openssl-0.9.8a版本)
posted on 2006-02-17 09:35 shootingstars 阅读(6389) 评论(7) 编辑 收藏

评论

谢谢
 回复 引用   

#2楼 2006-06-26 10:15 sophen[未注册用户]
还是不懂。不是很详细。
 回复 引用   

我遇到了这样的错误 "fatal error c1083:cannot open include file 'windows.h',no such file file or directory" 一直解决不了,请教一下
 回复 引用   

#4楼 2007-08-31 16:45 kaikai[未注册用户]
多谢,终于编译成功了。
 回复 引用   

你好。怎么样去搭建一个工程的环境,在编译器上需要如何设置 我的MSN是lingyunzhiyu@163.com QQ86572683 希望你能和我联系
 回复 引用   

#6楼 2009-01-29 11:30 hay1288[未注册用户]
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.

C:\Documents and Settings\Administrator>f:

F:\>cd f:\openssl-0.9.8e

F:\openssl-0.9.8e>perl configure vc-win32
Configuring for vc-win32
Usage: Configure [no-<cipher> ...] [enable-<cipher> ...] [-Dxxx] [-lxxx] [-Lxxx]
[-fxxx] [-Kxxx] [no-hw-xxx|no-hw] [[no-]threads] [[no-]shared] [[no-]zlib|zlib-
dynamic] [no-asm] [no-dso] [no-krb5] [386] [--prefix=DIR] [--openssldir=OPENSSLD
IR] [--with-xxx[=vvv]] [--test-sanity] os/compiler[:flags]

pick os/compiler from:
BC-32 BS2000-OSD BSD-generic32 BSD-generic64 BSD-ia64 BSD-sparc64 BSD-sparcv8
BSD-x86 BSD-x86-elf BSD-x86_64 Cygwin Cygwin-pre1.3 DJGPP MPE/iX-gcc OS2-EMX
OS390-Unix ReliantUNIX SINIX SINIX-N UWIN VC-CE VC-NT VC-WIN32 VC-WIN64A
VC-WIN64I aix-cc aix-gcc aix3-cc aix64-cc aix64-gcc aux3-gcc bsdi-elf-gcc cc
cray-j90 cray-t3e darwin-i386-cc darwin-ppc-cc dgux-R3-gcc dgux-R4-gcc
dgux-R4-x86-gcc dist gcc hpux-cc hpux-gcc hpux-ia64-cc hpux-ia64-gcc
hpux-parisc-cc hpux-parisc-cc-o4 hpux-parisc-gcc hpux-parisc1_0-cc
hpux-parisc2-cc hpux-parisc2-gcc hpux64-ia64-cc hpux64-ia64-gcc
hpux64-parisc2-cc hpux64-parisc2-gcc hurd-x86 irix-cc irix-gcc irix-mips3-cc
irix-mips3-gcc irix64-mips4-cc irix64-mips4-gcc linux-alpha+bwx-ccc
linux-alpha+bwx-gcc linux-alpha-ccc linux-alpha-gcc linux-aout linux-elf
linux-generic32 linux-generic64 linux-ia32-icc linux-ia64 linux-ia64-ecc
linux-ia64-icc linux-ppc linux-ppc64 linux-sparcv8 linux-sparcv9 linux-x86_64
linux64-sparcv9 mingw ncr-scde netware-clib netware-libc netware-libc-bsdsock
netware-libc-gcc newsos4-gcc nextstep nextstep3.3 osf1-alpha-cc osf1-alpha-gcc
purify qnx4 qnx6 rhapsody-ppc-cc sco5-cc sco5-gcc solaris-sparcv7-cc
solaris-sparcv7-gcc solaris-sparcv8-cc solaris-sparcv8-gcc solaris-sparcv9-cc
solaris-sparcv9-gcc solaris-x86-cc solaris-x86-gcc solaris64-sparcv9-cc
solaris64-sparcv9-gcc solaris64-x86_64-cc solaris64-x86_64-gcc sunos-gcc
tandem-c89 tru64-alpha-cc ultrix-cc ultrix-gcc unixware-2.0 unixware-2.1
unixware-7 unixware-7-gcc vos-gcc vxworks-mipsle vxworks-ppc405 vxworks-ppc750
vxworks-ppc750-debug vxworks-ppc860 debug debug-BSD-x86-elf debug-Cygwin
debug-ben debug-ben-debug debug-ben-openbsd debug-ben-openbsd-debug
debug-ben-strict debug-bodo debug-darwin-ppc-cc debug-geoff
debug-levitte-linux-elf debug-levitte-linux-elf-extreme
debug-levitte-linux-noasm debug-levitte-linux-noasm-extreme debug-linux-elf
debug-linux-elf-noefence debug-linux-pentium debug-linux-ppro debug-rse
debug-solaris-sparcv8-cc debug-solaris-sparcv8-gcc debug-solaris-sparcv9-cc
debug-solaris-sparcv9-gcc debug-steve debug-steve-linux-pseudo64 debug-ulf
debug-vos-gcc

NOTE: If in doubt, on Unix-ish systems use './config'.

F:\openssl-0.9.8e>ms\do_ms

F:\openssl-0.9.8e>perl util\mkfiles.pl 1>MINFO

F:\openssl-0.9.8e>perl util\mk1mf.pl no-asm VC-WIN32 1>ms\nt.mak

F:\openssl-0.9.8e>perl util\mk1mf.pl dll no-asm VC-WIN32 1>ms\ntdll.mak

F:\openssl-0.9.8e>perl util\mk1mf.pl no-asm VC-CE 1>ms\ce.mak
%OSVERSION% is not defined at util/pl/VC-32.pl line 41.
Compilation failed in require at util\mk1mf.pl line 138.

F:\openssl-0.9.8e>perl util\mk1mf.pl dll no-asm VC-CE 1>ms\cedll.mak
%OSVERSION% is not defined at util/pl/VC-32.pl line 41.
Compilation failed in require at util\mk1mf.pl line 138.

F:\openssl-0.9.8e>perl util\mkdef.pl 32 libeay 1>ms\libeay32.def

F:\openssl-0.9.8e>perl util\mkdef.pl 32 ssleay 1>ms\ssleay32.def

F:\openssl-0.9.8e>nmake -f ms\ntdll.mak
'nmake' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

F:\openssl-0.9.8e>make
'make' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

F:\openssl-0.9.8e>
F:\openssl-0.9.8e>^V



您好,楼主,这是从控制台窗口复制下来的。一直是这样,无法编译,请赐教!俺的qq是269648037,电话是08716753110,盼指教,先谢!!!






















 回复 引用   

#7楼[楼主] 2009-01-31 09:29 shootingstars      
关于3楼和6楼的问题,都是由于没有设置vc的环境变量的问题造成的。
在windows下的开始中关于vc2005程序中有一个快捷方式是专门用于设置环境变量的控制台,你们可以试试看。
 回复 引用 查看