如何在 Windows 下编译 OpenSSL
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在 Windows 下编译 OpenSSL相关的知识,希望对你有一定的参考价值。
解压缩OpenSSL包,在对它进行修改便可以编译了。在解压缩后,所有的源代码放在openssl- 1.0.1e目录下,在此目录下,有两个文件INSTALL.W32, INSTALL.W64需要被关注。打开其中的任何一个文件,你会看到如何编译OpenSSL的各个步骤。1)打开VS Studio命令行工具,如图1所示。若编译64位OpenSSL库,请打开Visual Studio x64 Win64 Command Prompt,反之亦然。
2)配置编译文件及安装目录;
编译Win32:perl Configure VC-WIN32 --prefix=c:\\some\\openssl\\dir
编译Win64:perl Configure VC-WIN64A
“c:\\some\\openssl\\dir”目录可以改成任何你希望的安装目录
3)搭建编译环境:
ms\\do_nasm
ms\\do_ms
对于64位编译,将ms\\do_ms替换成ms\\do_win64a
4)编译OpenSSL
nmake -f ms\\ntdll.mak
5)安装编译生成的库到“c:\\some\\openssl\\dir”
nmake -f ms\\ntdll.mak install 参考技术A 1、使用VS2005下的Visual Studio 2005 Command Prompt进入控制台模式(这个模式会自动设置各种环境变量)
2、解压缩openssl的包,进入openssl的目录
3、perl configure VC-WIN32
尽量在这个目录下执行该命令,否则找不到Configure文件,或者指定完整的Configure文件路径。
4、ms\do_ms
在解压目录下执行ms\do_ms命令
5、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选项去掉,存盘。。
以上是关于如何在 Windows 下编译 OpenSSL的主要内容,如果未能解决你的问题,请参考以下文章