CentOS 7 安装ROM编译环境(记录)
编译环境
安装EPEL软件源
yum install -y epel-release
安装基础依赖
yum install -y java gperf squashfs-tools lzip lzop ccache maven tmux screen lzop pngcrush squashfs-tools openssl-devel bc libxslt libxml2-devel ncftp pngquant w3m ImageMagick cmake python3 patchelf rsync svn patch ncurses ncurses-devel perl-Thread-Queue perl-Digest-SHA
安装开发套件
yum groupinstall "Development tools" -y
安装 32bit 运行库
yum install -y libstdc++.i686
安装 schedtool
yum install -y http://mirror.sbwml.net/schedtool/schedtool-1.3.0-12.el7.psychotic.x86_64.rpm
如果连接失效,请到 pkgs.org 进行下载安装。
更新5.x内核(安卓10源码开始要求4.10内核以上)
查看当前内核版本,如果内核版本为 3.x 则需要进行内核更新。
uname -r
更新内核
# 载入公钥
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# 安装 elrepo 内核源
yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm -y
# 安装内核(主线版本 mainline)
yum --disablerepo=\* --enablerepo=elrepo-kernel install kernel-ml.x86_64 -y
# 卸载旧内核工具包
yum remove kernel-tools kernel-tools-libs -y
# 安装新内核工具包
yum --disablerepo=\* --enablerepo=elrepo-kernel install kernel-ml-tools.x86_64 -y
# 设置最新内核为默认
grub2-set-default 0
# 重建内核引导配置
grub2-mkconfig -o /boot/grub2/grub.cfg
# 重启系统
reboot
完成后,重启系统,重启完成后,再次使用 uname -r
查看内核版本,显示为 5.x 版本则更新成功。
更新 glibc-2.24(可选、危险)
目前最新Android源码使用clang作为编译链,CentOS 7 系统默认 Glibc 库版本过低导致clang无法工作,故编译更新。但这是一个危险操作,如果操作失败,会导致整个系统崩溃无法启动,对于Linux 不熟悉的朋友,可使用 yum update
安全更新到 glibc-2.17。(glibc-2.17 现已支持 google clang 全部版本)
curl -O https://mirrors.tuna.tsinghua.edu.cn/gnu/glibc/glibc-2.24.tar.gz
tar zxf glibc-2.24.tar.gz
cd glibc-2.24/
mkdir out && cd out
../configure --prefix=/usr
make -j$(nproc --all)
make install
设置最大进程数量 & 文件打开数量(需要重启生效)
该操作避免编译过程中线程受限导致编译任务被停止
sed -i '/^#DefaultLimitNOFILE=/aDefaultLimitNOFILE=8192' /etc/systemd/system.conf
sed -i '/^#DefaultLimitNPROC=/aDefaultLimitNPROC=655350' /etc/systemd/system.conf