openssl windows 下 编译 bat

Posted 雪域蓝心

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了openssl windows 下 编译 bat相关的知识,希望对你有一定的参考价值。

++++全部++++++++

@echo off
rem set sslpath=C:\\0openssl\\
rem echo %sslpath%

set X86_lib=C:\\0openssl\\32\\lib\\src
set X86_lib_o=C:\\0openssl\\32\\lib\\out

set X86_dll=C:\\0openssl\\32\\dll\\src
set X86_dll_o=C:\\0openssl\\32\\dll\\out

set X64_lib=C:\\0openssl\\64\\lib\\src
set X64_lib_o=C:\\0openssl\\64\\lib\\out

set X64_dll=C:\\0openssl\\64\\dll\\src
set X64_dll_o=C:\\0openssl\\64\\dll\\out

 


set /p type=请输入编译类型0-X86_lib 1-X86_dll 2-X64_lib 3-X64_dll :
echo "++++++++++++++++++++++++++++++++++X86_lib"
if %type% == 0 (
rem 目录复制
rd /s /q %X86_lib%
mkdir %X86_lib%
xcopy D:\\opensslSRC %X86_lib% /e/s

rem 环境配置--- 注意VS2010与.net4.5冲突 生成dll 需要修改
rem 参照 https://www.cnblogs.com/20170722-kong/articles/9141952.html
D:
cd "D:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\bin"
call vcvars32.bat


c:
cd c:\\
cd %X86_lib%

perl Configure VC-WIN32 no-asm --prefix=%X86_lib_o%

rem 生成
call ms\\do_ms.bat

rem 语句无效
rem call ms\\do_win32

rem nt 编译为lib
nmake -f ms\\nt.mak

rem nmake -f ms\\nt.mak test

nmake -f ms\\nt.mak install

) else (
echo "........................................X86_lib.")

echo "++++++++++++++++++++++++++++++++++X86_dll"
if %type% == 1 (

rem 目录复制
rd /s /q %X86_dll%
mkdir %X86_dll%
xcopy D:\\opensslSRC %X86_dll% /e/s

 

rem 环境配置--- 注意VS2010与.net4.5冲突 生成dll 需要修改
rem 参照 https://www.cnblogs.com/20170722-kong/articles/9141952.html
D:
cd "D:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\bin"
call vcvars32.bat

c:
cd c:\\
cd %X86_dll%

perl Configure VC-WIN32 no-asm --prefix=%X86_dll_o%

rem 生成
call ms\\do_ms.bat

rem 语句无效
rem call ms\\do_win32

rem nt 编译为lib
nmake -f ms\\ntdll.mak

rem nmake -f ms\\ntdll.mak test

nmake -f ms\\ntdll.mak install

) else (
echo "........................................X86_dll.")


echo "++++++++++++++++++++++++++++++++++X64_lib"
if %type% == 2 (
rd /s /q %X64_lib%
mkdir %X64_lib%
xcopy D:\\opensslSRC %X64_lib% /e/s


D:
cd "D:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\bin\\amd64"
call vcvars64.bat

c:
cd c:\\
cd %X64_lib%

perl Configure VC-WIN64A no-asm --prefix=%X64_lib_o%

call ms\\do_ms.bat
call ms\\do_win64a

rem nt 编译为lib
nmake -f ms\\nt.mak

rem nmake -f ms\\nt.mak test

nmake -f ms\\nt.mak install

) else (
echo "........................................X64_lib.")


echo "++++++++++++++++++++++++++++++++++X64_dll"
if %type% == 3 (
rd /s /q %X64_dll%
mkdir %X64_dll%
xcopy D:\\opensslSRC %X64_dll% /e/s


D:
cd "D:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\bin\\amd64"
call vcvars64.bat

c:
cd c:\\
cd %X64_dll%

perl Configure VC-WIN64A no-asm --prefix=%X64_dll_o%

call ms\\do_ms.bat
call ms\\do_win64a

rem nt 编译为lib
nmake -f ms\\ntdll.mak

rem nmake -f ms\\ntdll.mak test

nmake -f ms\\ntdll.mak install

) else (
echo "........................................X64_dll.")

 

 

pause

 

 

 ------------------全部------------------

 

 

 

 

make_openssl32.bat   -----------

D:
cd D:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\bin\\
call vcvars32.bat

c:
cd c:\\
cd openssl-1.0.2g

perl Configure VC-WIN32 no-asm --prefix=C:\\openssl-1.0.2g\\win32
call ms\\do_ms.bat

call ms\\do_win32

rem nt 编译为lib
nmake -f ms\\nt.mak

rem ntdll.mak编译为dll
rem nmake  -f  ms\\ntdll.mak

 

rem nmake -f ms\\nt.mak test

nmake -f ms\\nt.mak install


pause

 

 

make_openssl64.bat --------

D:
cd D:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\bin\\amd64\\
call vcvars64.bat


c:
cd c:\\
cd openssl-1.0.2g
perl Configure VC-WIN64A no-asm --prefix=C:\\openssl-1.0.2g\\win64

call ms\\do_ms.bat
call ms\\do_win64a

rem nt 编译为lib
nmake -f ms\\nt.mak

rem ntdll.mak编译为dll
rem nmake  -f  ms\\ntdll.mak

rem nmake -f ms\\nt.mak test

nmake -f ms\\nt.mak install


pause

参考网址 及 原文:

https://bbs.csdn.net/topics/392193545?page=1

 本人同样也是刚刚接触openssl,看到一个安装教程就直接上手,结果走了很多弯路。建议大家多看些资料再安装,出现问题不要急着放弃,在网上去查一下问题代码,一个一个解决。阅读网上分享出来的安装教程,大家都是安装了好几次,耗时几天。我也是在查阅很多资料,耗时很久才安装成功,所以,也把我安装的过程分享出来。供大家参考,有什么不足,不对的地方欢迎大家指正。
(PS:如果你想看看原始的INSTALL文件,那么请打开OpenSSL的解压缩目录,下面有两个文件INSTALL.W32和INSTALL.W64,用记事本方式打开,你可以看到详细的关于安装的解释)

——>有同学就直接安装成功。

1.下载ActivePerl  5.24.1
下载网址:https://www.activestate.com/activeperl/downloads



2.安装ActivePerl软件:
  一步一步安装即可。上面有选择添加到环境变量,安装成功后,还需再设置环境变量。 
例如我将ActivePerl安装在C:\\Perl64\\目录下,则选中Path,单击编辑按钮,将C:\\Perl64\\site\\bin;C:\\Perl64\\bin;加入其中,确认即可。(个人建议安装到C盘,后续好操作)




  如何确认安装成功,运行cmd,输入perl -v,然后回车,出现下面显示内容,就是成功的


3.安装Microsoft Visual Studio 2010 
  Microsoft visual_studio_2010_professional软件安装包http://pan.baidu.com/s/1o6SsDn0
  当然其他版本的也可以。这个软件比较大,安装所需的时间也比较长,耐心点,一步一步安装即可。



  将C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\bin\\amd64;加入系统环境变量(系统在Path路径中可能已添加C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\bin,如果没有就添加上),
具体以你安装的路径为准

4.安装NASM 
  (有的没有安装该软件也能成功,个人建议安装)
地址:http://www.nasm.us/

 当前稳定版本为:2.12.02 
 http://www.nasm.us/pub/nasm/releasebuilds/2.12.02/win64/



  然后安装,并将其安装路径加入到到系统环境变量Path中.例如:C:\\Users\\lenovo\\AppData\\Local\\NASM

5.下载OpenSSL
地址:http://www.openssl.org/source/



下载后,将其解压缩至自己的目录下,建议在C盘不含中文名和空格的目录下,这样做便于后续操作。例如我C:\\openssl

6.初始化编译环境 
打开所有程序,找到在Visual Studio Tools文件夹下的Visual Studio x64 Win64命令提示(2010)工具
这里使用的是在Visual Studio Tools文件夹下的Visual Studio x64 Win64命令提示(2010)工具。



 进入Visual Studio 2010安装目录 C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\中 
 执行命令:cd C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\bin\\amd64 
 执行命令:vcvars64.bat 



7. 执行configure
  首先将命令指向你的openssl目录下,(这就是将Openssl放到C盘或者说将VS2010与其放在一个盘就好操作些)



也可以直接cd到:cd C:\\openssl
进去后
接着实现命令:perl Configure VC-WIN64 no-asm --prefix=C:\\openssl
(因为openssl其安装到C:\\openssl,按照你的存储路径去写后面的路径)

另外:当你下载的openssl是高版本的话,如openssl-1.0.2g,需要在这里加上no-asm,表示不使用汇编,如果你不加上的话,在执行nmake命令时会出错。但是如果下载是openssl-1.0.1c,貌似不用加no-asm也可以成功。

  血的教训,在这一步没有操作正确,一直在后续的nmake中出错,找不到原因,几乎都要放弃。
  说多了都是泪!!!
  这块大家配置的命令多少有出入:1、 perl Configure VC-WIN64A 
                                                         2、perl Configure VC-WIN64A --perfix=C:\\openssl\\win64 (还是其存储路径)
    这两种我都没有成功,但我上述的命令不成功时,各位可以试试这两个。


  配图命令是32位的,当时忘记截图了,但结果是基本一致的。



成功截图(这也是32位的,基本一致)

 这时候可能有出现这个问题:
 It looks like you don\'t have either nmake or dmake.exe on your path




这个问题也是困扰了我好久,查了很多资料和方法都不起作用,最后,在一个帖子的帮助下完成的。如果出现相同问题可以参考。
http://www.cnblogs.com/emanlee/archive/2012/08/11/2633849.html

 8.执行 ms\\do_nasm

    输入命令:ms\\do_nasm 
  当时没有想着会成功并没有截图,这里也很有可能出现NAMKE: fatal error u1077……,返回代码“0x43”等等的错误,这时候就是我前面第7步提到的问题,困扰了很久,这里就不在赘述,如果出现问题,参见上面第7步。

 
 大体上是这样。

9.执行“ms\\do_win64a” 

  输入命令:ms\\do_win64a
  忘记截图!

[b]10.环境再次配置[/b]

   将命令提示符定位到C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\bin\\amd64 (VS2010安装位置), 然后输入 vcvars64.bat,会显示Setting environment  for  using Microsoft Visual Studio 2010 x64  tools. 如果没有这一步,下一步会提示nmake不是内部或外部命令。
  前面已经配置过,这里不配置有的可以成功,有的则不行,具体原因还不清楚,建议在设置一次。

11.执行 nmake  -f  ms\\nt.mak(这是静态库,后有动态库说明)

   再次将命令提示符定位到,也就是cd到C:\\openssl(也就是回到openssl源码目录下)
   输入命令:nmake  -f  ms\\nt.mak ;
   执行完后会在openssl-1.0.1g目录下生成out32和tmp32两个文件夹,out32文件夹中会生成两个静态库和一些执行文件,tmp32文件夹中会生成相应的汇编文件。



12.执行、测试:nmake  -f  ms\\nt.mak test

   输入命令: nmake  -f  ms\\nt.mak test;
  检查上一步编译是否成功,如果成功则最后显示“passed all tests”字样



13.执行命令:nmake  -f  ms\\nt.mak install
  
 成功则会在C:\\openss\\win64目录下生成bin、include、lib、ssl四个文件夹

 

到这里安装OpenSSL成功啦!

14.后续说明
  
   a.以上编译的是release库,若编译debug库,则将以上第7步中的VC-WIN64A改成debug-VC-WIN64A即可;

   b.若编译动态库则用ms\\ntdll.mak替换掉上述第11步上面用到的ms\\nt.mak即可。

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

  测试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

参考:http://www.linuxidc.com/Linux/2014-10/108502.htm
            http://blog.csdn.net/zh516846937/article/details/40188065

vs2010 问题 >LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏

 

以上是关于openssl windows 下 编译 bat的主要内容,如果未能解决你的问题,请参考以下文章

openssl windows 下 编译 bat

windows环境下VS2013编译openSSL

如何在 Windows 下编译 OpenSSL

如何在Windows下编译OpenSSL

如何在 Windows 下编译 OpenSSL

windows下rabbitmq-c编译(带openssl无需MinGW)