编译openssl库
源码下载
编译工程
-
打开命令行,进入源码根目录
-
配置VC编译环境,执行命令 ** “C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat” x86 **
-
配置openssl,执行命令 ** perl Configure VC-WIN32 –prefix=F:\3rd\openssl **
- –prefix 命令为openssl编译完成后的安装路径
- VC-WIN32 为32位,VC-WIN64A 为64位
-
生成makefile,执行命令 ** ms\do_ms.bat **
-
静态编译,执行命令 ** nmake -f ms\nt.mak **
-
或者动态编译,执行命令 ** nmake -f ms\ntdll.mak **
- 要修改 MT 或 MD 编译选项,可以在 .mak 文件中修改
-
编译完成后,安装openssl,执行命令 ** nmake -f ms\nt.mak install **
- 命令执行完毕后,openssl的库文件就会复制到之前 –prefix 参数指定的目录中
-
清理临时文件,执行命令 ** nmake -f ms\nt.mak clean **
问题更新
用 Visual Studio 2015 编译 openssl 静态库时,链接时会报错,找不到 __iob_func 的符号,这个需要修改openssl源码根目录下的 e_os.h 头文件,将其中
cpp FILE *__iob_func(); #define stdin (&__iob_func()[0]) #define stdout (&__iob_func()[1]) #define stderr (&__iob_func()[2])
改为
cpp FILE* __cdecl __acrt_iob_func(unsigned); #define stdin (__acrt_iob_func(0)) #define stdout (__acrt_iob_func(1)) #define stderr (__acrt_iob_func(2))