编译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 **

    • 要修改 MTMD 编译选项,可以在 .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))