问题
在ubuntu 18.04上编译Android 8.1.0源码时过程中,遇到了问题:
FAILED: gensecimage_target
........
........
ninja: build stopped: subcommand failed.
原因
主要是因为18.04上自带的OpenSSL过高导致,在ubuntu 16.04上OpenSSL版本是1.0.x版本,18.04上的自带版本是1.1.x版本。
要解决编译的错误,就需要手动降级OpenSSL版本。
知识整理
看过不少帖子,按照步骤进行安装,都是失败。
下面的方式是尝试 make install 成功的。
地址:https://cloudwafer.com/blog/installing-openssl-on-ubuntu-16-04-18-04/
由于网速比较慢,对应整理了下。
安装步骤
基本的环境准备,更新系统包。
$ sudo apt-get update && sudo apt-get upgrade
查看系统以后openssl的安装位置。
$ whereis openssl
查看openssl版本。
openssl version -a
1. 安装基本软件
make安装需要一些依赖软件。
$ sudo apt install build-essential checkinstall zlib1g-dev -y
2. 下载OpenSSL
去ssl网站找到需要的版本进行下载。
也可以选择历史版本进行下载,old releases
将下载的 tar.gz 包放置与 /usr/local/ 目录。
$ tar -xvf openssl-1.0.2u.tar.gz
3. make安装
执行如下的命令步骤:
$ cd openssl-1.0.2u
$ sudo ./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl shared zlib # 此步骤中讲安装的位置进行了设置
$ sudo make
$ sudo make test
$ sudo make install
4. 配置共享库
进入到 /etc/ld.so.conf.d 目录,创建配置文件。
$ cd /etc/ld.so.conf.d/
$ sudo nano openssl-1.0.2u.conf
再打开的编辑器中输入:
/usr/local/ssl/lib
在退出编辑器前需要确保保存,ctrl+x进行保存。
然后退出,再重新加载动态链接。
$ sudo ldconfig -v
5. 替换系统默认openssl版本
在安装了自己选择的openssl版本之后,需要替换系统默认版本的openssl版本,因此需要进行一些操作。
-
首先,备份默认版本的二进制文件。
$ sudo mv /usr/bin/c_rehash /usr/bin/c_rehash.backup $ sudo mv /usr/bin/openssl /usr/bin/openssl.backup
-
编辑environment,在PATH末尾插入值:":/usr/local/ssl/bin"
$ sudo vim /etc/environment
编辑PATH,末尾添加
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/games:/usr/local/ssl/bin"
-
保存退出。
-
重新加载PATH值。
$ soruce /etc/environment
6. 验证替换后的版本
$ whick openssl
$ openssl version -a