在 Linux 平台上用 C 、C++ 语言做开发时,有时需要用到 OpenSSL。CentOS(本文使用的版本是 64 位的 CentOS 6.8)在安装时包含 OpenSSL 的基本文件,比如在 /usr/bin 目录下有一个名为 openssl 的可执行文件,这些文件对于程序开发来说并不够用。在 CentOS 中可以使用命令:
yum install openssl-devel
安装 OpenSSL 开发包。完成之后, OpenSSL 的 .h 头文件被放在 /usr/include 目录下,动态库文件 libssl.so 和 libcrypto.so 文件被在 /usr/lib64 目录下。使用命令
openssl version
查看当前 OpenSSL 的版本号,看到的结果为:
OpenSSL 1.0.1e-fips 11 Feb 2013
如果不想通过 yum 命令安装 OpenSSL 开发包,而是想使用 GCC 编译 OpenSSL 源码,可以到 https://www.openssl.org/ 下载。本文使用的 GCC 版本是 4.4.7,使用的 OpenSSL 版本是 1.0.2k,创建一个目录,将下载的压缩包 openssl-1.0.2k.tar.gz 解压缩到新创建的目录下,依次执行以下命令:
./config
make
make install
就能完成安装。默认将把生成的文件放到 /usr/local/ssl 目录下,目录结构示意图如下:
/usr/local/ssl/ ---- bin(目录)
|-- certs(目录)
|-- include(目录)
|-- lib(目录)
|-- man(目录)
|-- misc(目录)
|-- private(目录)
|-- openssl.cnf(文件)
使用上面介绍的方法,只能生成静态库文件 libcrypto.a 和 libssl.a (这两个文件位于 /usr/local/ssl/lib 目录下),不能生成以 so 为后缀的动态库文件。如果需要生成动态库文件,假定希望将生成的文件放到 /usr/local/openssl-1.0.2k 目录下,可以采用下面的办法:
1) 在 /usr/local 目录下创建子目录 openssl-1.0.2k
2) 到 OpenSSL 源文件所在的目录下,如果刚才生成过静态库,则需要执行下面的命令进行清理操作:
make clean
执行命令:
./config -fPIC --prefix=/usr/local/openssl-1.0.2k shared
3) 执行以下命令:
make
make install
这样就可以完成编译了。可以在执行 make install 之前执行 make test 做一下检测,但是检测花费的时间较长。安装完成之后,OpenSSL 的 .h 头文件放在 /usr/local/openssl-1.0.2k/include 目录下,在 /usr/local/openssl-1.0.2k/lib 目录下包含以下库文件:
libcrypto.a,libcrypto.so,libcrypto.so.1.0.0,libssl.a,libssl.so,libssl.so.1.0.0
此时新生成文件的目录结构示意图如下:
/usr/local/openssl-1.0.2k/ ---- bin(目录) |-- include(目录) |-- lib(目录) |-- ssl/ ---- certs(目录) |-- man(目录) |-- misc(目录) |-- private(目录) |-- openssl.cnf(文件)
原文链接:https://www.f2er.com/centos/378283.html