Gmssl编译参数项说明

gmssl编译参数

  • 前言
  • 编译参数
    • 全局选项
    • 算法选项
    • 其它选项
  • 应用举例

前言

最近在整理电脑上项目资料,发现之前编译过nogmapi的gmssl库,因此整理记录下,方便以后回忆。

编译参数

Gmssl的编译参数基本上与OpenSSL的一致,同时又新增了一些配置参数项。gmssl/openssl配置脚本与大多数典型的软件包不同,它有自己的一套规则。详细的安装信息位于源码树下的Configure脚本文件中,如下所示:
Gmssl编译参数项说明_第1张图片
Configure 脚本除了生成 Makefile 之外,还会根据 crypto/opensslconf.h.in生成crypto/opensslconf.h 头文件,该文件中中定义了许多宏。
linux下通过config脚本配置时最终也是调用的Configure脚本,config 脚本检查系统环境并调用 Configure 完成配置,config 脚本的作用相当于 config.guess。
下图是生成的opensslconf.h部分宏定义:
Gmssl编译参数项说明_第2张图片
在 config 或 Configure 命令行上可以使用许多选项,具体如下

全局选项

第一类是全局性选项:

--openssldir=OPENSSLDIR
安装目录,默认是 /usr/local/ssl 。
--prefix=PREFIX
设置 lib include bin 目录的前缀,默认为 OPENSSLDIR 目录。
--install_prefix=DESTDIR
设置安装时以此目录作为"根"目录,通常用于打包,默认为空。
zlib
zlib-dynamic
no-zlib
使用静态的zlib压缩库、使用动态的zlib压缩库、不使用zlib压缩功能。
threads
no-threads
是否编译支持多线程的库。默认支持。
shared
no-shared
是否生成动态连接库。
asm
no-asm
是否在编译过程中使用汇编代码加快编译过程。
enable-sse2
no-sse2
启用/禁用SSE2指令集加速。如果你的CPU支持SSE2指令集,就可以打开,否则就要关闭。
gmp
no-gmp
启用/禁用GMP库
rfc3779
no-rfc3779
启用/禁用实现X509v3证书的IP地址扩展
krb5
no-krb5
启用/禁用 Kerberos 5 支持
ssl
no-ssl
ssl2
ssl3
no-ssl2
no-ssl3
tls
no-tls
启用/禁用 SSL(包含了SSL2/SSL3) TLS 协议支持。
dso
no-dso
启用/禁用调用其它动态链接库的功能。[提示]no-dso仅在no-shared的前提下可用。

算法选项

第二类用于禁用crypto目录下相应的子目录(主要是各种算法)。虽然理论上这些子目录都可以通过"no-*"语法禁用,但是实际上,为了能够最小安装libcrypto,libssl,openssl,其中的大部分目录都必须保留,实际可选的目录仅有如下这些

no-md2,no-md4,no-mdc2,no-ripemd
摘要算法
no-des,no-rc2,no-rc4,no-rc5,no-idea,no-bf,no-cast,no-camellia
对称加密算法
no-ec,no-dsa,no-ecdsa,no-dh,no-ecdh
非对称加密算法
no-comp
数据压缩算法
no-store
对象存储功能

其它选项

skf
no-skf
启用/禁用SKF相关接口
sdf
no-sdf
启用/禁用SDF相关接口
saf
no-saf
启用/禁用SAF相关接口
sof
no-sof
启用/禁用SOF相关接口

这些都是gmapi相关的接口,对应GM/T 0016、GM/T 0018、GM/T 0019、GM/T 0020等国密规范。

应用举例

小编在项目中想自己实现GM/T 0019规范中SAF类接口,由于gmssl中已声明定义了这些接口,若使用静态库,将导致其与我自己定义的接口冲突。故而通过这些选项将gmapi相关接口去除。

你可能感兴趣的:(gmssl学习,openssl,密码学)