[TOC]
由于没有提供vs的.sln,无法通过可视化的IDE来编译库,且笔者这个弱鸡也不会通过自己的双手来解决这个问题。
因而,openssl在双平台下的编译方式十分类似,只有在选择目标平台架构时有轻微的出入。
在生成Makefile文件时,需要依赖perl库,
Windows下推荐Strawberry Perl for Windows
Linux下依赖于pod2html,笔者使用的是CentOS 8,可通过命令sudo yum install perl-Pod-Html.noarch
进行安装,其他发行版读者大人们可以自行查找资料。
共同部分
对于我们普通人来说,编译参数只需要考虑如下几个即可:
参数 | 释义 |
---|---|
no-asm | 不生成汇编代码(建议选上,否则还需要安装对应的依赖) |
no-share | 不生成共享库 |
--debug | 编译为debug模式 |
--release | 编译为release模式(默认为release) |
--prefix | make install的安装位置 |
--openssldir | openssl配置文件所在路径 |
上述参数在windows和linux上一致,各位看官可以安心食用。
差异部分
展开来说,选择目标平台架构时的差异分为两个部分,
首先是Windows:
在Windows上,
使用perl Configure platform的形式选择编译的平台,
其中platform的可选范围为[VC-WIN32 | VC-WIN64A | VC-WIN64I | VC-CE],
分别表示[x86 | x86_64 | IA64 | WinCE(?)]
接着是Linux:
在Linux上,
使用CFLAGS=platform ./config的形式选择编译的平台,
其中platform的可选范围位[-m64 | -m32],
分别表示[x86_64 | x86]
总结
以编译x86_64架构为例,先切到openssl所在路径,然后:
Windows:
根据目标平台,从如下工具中做出选择:
分别是64位系统生成32位应用程序的vs终端,和原生64位的vs终端。
perl Configure VC-WIN64A no-asm no-shared --debug --prefix=C:\a\b\c\openssl-1.1.1l\x86_64_debug --openssldir=C:\a\b\c\openssl-1.1.1l\x86_64_debug
nmake
nmake install_sw
Linux:
CFLAGS=-m64 ./config no-asm --debug --prefix=/a/b/c/d/openssl-1.1.1l/x86_64_debug --openssldir=/a/b/c/d/openssl-1.1.1l/x86_64_debug
make
make install_sw