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

到此,编译环境安装完成。

最后修改:2021 年 10 月 07 日
如果觉得我的文章对你有用,请随意赞赏