Windows环境下使用VS2010编译OpenSSL-1.0.1i

时间:2021-12-11 19:37:24
准备工作:

1、安装VC++ 2010。

2、需要perl的支持,下载最新ActivePerl并安装。

3、下载 Openssl1.0.1i 并解压。 

====================================================================================================

编译步骤:

1.使用VS200510下的Visual Studio 2010 Command Prompt进入控制台模式

  开始菜单->所有程序->Microsoft->Microsoft Visual Studio 2010->Visual Studio Tools->Visual Studio 2010 Command Prompt

2.进入openssl源码的目录

  命令行键入 cd /D D:\openssl-1.0.1i  //把路径替换成自己的源码路径

3.命令行键入 perl configure VC-WIN32

4.命令行键入 ms\do_ms.bat

另外两种方式 如果使用也必须保证本机安装有相应的编译器才能使用。
:ms\do_masm (默认vc自带的;也可以自己下载masm并安装)
:ms\do_nasm (需要下载nasm)

注意:请不要cd进ms目录再执行do_ms.bat命令,会因为当前目录不对而报错。

5.编译分两种情况,生成静态库和动态库
  (1) 如果是编译OpenSSL动态库,则在命令行键入 nmake -f ms\ntdll.mak
    编译成功课在文件夹out32dll里面查看输出的文件,包括应用程序的exe文件、lib文件、dll文件。
  (2) 如果是编译OpenSSL静态库,则在命令行键入 nmake -f ms\nt.mak
    编译成功课在文件夹out32里面查看输出的文件,包括应用程序的exe文件、lib文件。

注意:此处编译需要较长时间,请耐心等待,切勿人为中断。

到此编译已经完成,将OpenSSL下的include文件夹、lib文件、dll文件考出,使用的时候包含进去就行了。

  另外还有几个命令可能会用到:

  测试OpenSSL动态库:nmake -f ms\ntdll.mak test
  测试OpenSSL静态库:nmake -f ms\nt.mak test
  安装OpenSSL动态库:nmake -f ms\ntdll.mak install
  安装OpenSSL静态库:nmake -f ms\nt.mak install
  清除上次OpenSSL动态库的编译,以便重新编译:nmake -f ms\ntdll.mak clean
  清除上次OpenSSL静态库的编译,以便重新编译:nmake -f ms\nt.mak clean

====================================================================================================

可能遇到的问题及解决办法:

1. 启用Windows控制台(运行cmd)进行编译,执行第5步nmake -f ms\ntdll.mak或nmake -f ms\nt.mak会报错:
  'nmake' 不是内部或外部命令,也不是可运行的程序或批处理文件。

解决办法:严格按第1步操作,启动Visual Studio 2010 Command Prompt进行编译,这个会自动配置环境。

2.启用SDK Command Prompt进行编译,执行第5步nmake -f ms\ntdll.mak或nmake -f ms\nt.mak会报错:
  ms\uplink.c(11) : fatal error C1083: Cannot open include file: 'windows.h': No such file or directory
  NMAKE : fatal error U1077: '"D:\Program Files\Microsoft Visual Studio 10\VC\bin\cl.EXE"' : return code '0x2' Stop.

解决办法:在执行第5步nmake -f ms\ntdll.mak前,进入D:\Program Files\Microsoft Visual Studio 10\VC\bin路径下(替换成自己的VC安装路径),命令行键入vcvars32,运行vcvars32.bat。然后再回到OpenSSL源码的目录(D:\openssl-1.0.1i),再执行第5步nmake -f ms\ntdll.mak或nmake -f ms\nt.mak

3. 'ml' 不是内部或外部命令,也不是可运行的程序或批处理文件。
NMAKE : fatal error U1077: 'ml' : return code '0x1' Stop.
解决办法:把VC下的ml.exe复制到当前目录即可。但是有些人安装VC后没有ml.exe,这个也好解决,下载一个MASM,名字是MASMsetup.exe,不用安装,按下面来:
1、用winrar解压安装文件MASMsetup.EXE,得到Setup.exe
2、用winrar解压Setup.exe,得到vc_masm1.cab
3、用winrar解压vc_masm1.cab,得到一个文件,文件名很长,改名为ml.exe就行了。