下载openssl源码
官网链接:openssl源码官网下载
下载编译openssl的依赖
在任意位置打开终端,输入命令:
sudo apt-get install build-essential checkinstall zlib1g-dev -y
以下是对各个参数的解释:
sudo:以管理员身份运行,也就是超级用户(root),权限更高了
apt-get: 基于 Debian/Ubuntu 的 Linux 发行版中用于软件包管理的终端命令。它可以从远程存储库中获取软件包,并自动安装、更新或卸载它们。
install: 安装一个或多个软件包。
build-essential: 它是一个 Ubuntu 发行版中的软件包名,其中包含了编译 C/C++ 程序所需的基本工具,如 gcc 编译器和 make 构建工具等。
checkinstall: 一个其它常见版本的替代品,使用此包生成 deb 软件包并安装,方便管理和卸载。zlib1g-dev: 它是一个支持 gzip 格式压缩的开发库,提供 zlib 库的头文件和静态链接库文件,因此 C/C++ 程序可以通过使用相应的 API 对数据进行压缩和解压缩。
-y :选项表示自动应答所有提示信息,即不需要手动确认,直接进行安装(有一定风险,可不加)
执行命令后没有报错是最好的那就是已经安装好了,像我这里就遇到无法定位软件包问题,无法定位checkinstall zlib1g-dev
解决报错
首先确定基本开发工具编译器已经安装,输入命令:
sudo apt-get update
sudo apt-get install build-essential -y
之后如果还有报错,就换源(建议自己去官网找),我这边换的是阿里源,换源之前记得备份:
# 备份原来的文件
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 修改sources.list文件内容
sudo vim /etc/apt/sources.list
amd64环境更换以下内容:
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
arm64环境更换以下内容:
# 默认注释了源码仓库,如有需要可自行取消注释
deb https://mirrors.aliyun.com/ubuntu-ports/ xenial main restricted universe multiverse
# deb-src https://mirrors.aliyun.com/ubuntu-ports/ xenial main main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu-ports/ xenial-updates main restricted universe multiverse
# deb-src https://mirrors.aliyun.com/ubuntu-ports/ xenial-updates main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu-ports/ xenial-backports main restricted universe multiverse
# deb-src https://mirrors.aliyun.com/ubuntu-ports/ xenial-backports main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu-ports/ xenial-security main restricted universe multiverse
# deb-src https://mirrors.aliyun.com/ubuntu-ports/ xenial-security main restricted universe multiverse
# 预发布软件源,不建议启用
# deb https://mirrors.aliyun.com/ubuntu-ports/ xenial-proposed main restricted universe multiverse
# deb-src https://mirrors.aliyun.com/ubuntu-ports/ xenial-proposed main restricted universe multiverse
更换源后更新apt-get:
sudo apt-get update
大部分都会报错缺少公钥(3b4fe6acc0b21f32),当然不报错更好,下载缺少的公钥:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3b4fe6acc0b21f32
keyserver.ubuntu.com 是服务器地址
缺少哪个公钥就下载哪个(我的是3b4fe6acc0b21f32),如果无法连接服务器就更换服务器:
pgp.mit.edu
keyserver.pgp.com
keys.gnupg.net
基本到这里openssl的依赖就下载完毕了,如果还遇到找不到软件包多半是名字打错了,可以查询其部分相关,例如找不到zlib1g-dev:
sudo apt-cache search zlib
在输出界面找到自己需要的软件包名,复制粘贴是最稳的(一般复制后需要粘贴到终端外的文本文档中,然后在复制,右键粘贴到命令行中)。
编译openssl
进入到openssl源码所在文件夹(就是包含config文件以及apps doc等文件夹的那层)
执行构建命令:
arm64:
./Configure linux-aarch64 -shared --prefix=指定库生成路径
amd64:
./Configure linux-x86_64 -shared --prefix=指定库生成路径
linux-aarch64:cpu架构为arm64
-shared:生成共享库(动态链接库)
--prefix:指定openssl库安装路径
之后分别执行
make
sudo make install
执行成功后库文件就生成在自己指定的目录下了