openssl-1.1.1l在双平台下编译

[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:
根据目标平台,从如下工具中做出选择:


图1 编译工具

分别是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

你可能感兴趣的:(openssl-1.1.1l在双平台下编译)