• 主页
  • 归档
  • 软件
所有文章 友情链接 关于我

  • 主页
  • 归档
  • 软件

安卓内核编译速通

2025-02-13

灵感来源:前几天捣鼓k9的内核偶然想到的

注:本人小白一枚,如有错误请指出

注:本文为速通文章,存在奇技淫巧,这些奇技淫巧可能会导致编译出来的内核刷入后开不开机或功耗增大等副作用

注:请确保手机已经root

1.准备工作

准备一个linux环境,实体机或虚拟机都行,要求4+64起步。

2.安装依赖

运行:

1
2
3
sudo apt install clang lld bison flex make pypy binutils binutils-aarch64-linux-gnu binutils-arm-linux-gnueabihf git -y
sudo ln -s /usr/bin/pypy /usr/bin/python
sudo ln -s /usr/bin/pypy /usr/bin/python2

解释:

  • clang: c编译器,google从某一个安卓版本起使用魔改clang编译安卓内核,但是这是速通所以就不去谷歌拉巨大编译链了
  • lld: 连接器,跟clang一起隶属于llvm项目,是llvm的前端
  • bison,flex: 语法分析器,flex将.lex文件翻译成.c文件,bison将.y文件翻译成.y和.h文件:
  • make: 一个自动化编译工具,通过解析makefile描述的文件和规则执行编译操作
  • pypy: 用于执行scripts里的mkdtboimg.py生成dtbo.img,如果软件源里没有可以用python3版本的mkdtboimg.py替代
  • binutils:一个编译工具集合,提供例如as,ar等一系列工具,例如头图的 AR built-in.a.但是一般安装的是本机架构的binutils,对于交叉编译来说语言安装对应架构的binutils

3.获取源码

一般在github搜索就能找到,例如:

kernel_xiaomi(小米)_sm8250(手机对应的soc代号,可以百度,例如骁龙855,860对应sm8150,骁龙845对应sdm845,骁龙835对应msm8998)

4.确认手机配置文件

手机有root的话直接提取/proc/config.gz然后解压gz文件就能获取本机配置文件扔在内核源码根目录下的arch/arm64/configs/xxx_defconfig就可以了

5.克隆源码

运行:

1
git clone 内核源码网址 --depth=1

内核编译一般情况下只需要拉取一层的git提交记录就可以了。如果要多拉基层就把1改成对应的数字

6.编译

在源码根目录下执行

1
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- CROSS_COMPILE_ARM32=arm-linux-gnuabeihf- CC=clang LD=ld.lld HOSTCC=clang HOSTLD=ld.lld O=out KCFLAGS+=-Wno-error xxx_defconfig all

解释:

  • make: 执行构建指令
  • ARCH=arm64: 编译内核架构为arm64
  • CROSS_COMPILE: 指定交叉编译器,由于是速通使用默认binutils就可以,默认是64位,ARM32是32位
  • CC=clang: 内核编译器为clang
  • LD=ld.lld: 内核链接器为lld
  • HOSTCC=clang: 使用本机编译器为clang,上图中的conf和dtc都是通过本机编译器而不是内核编译器来编译的
  • HOSTLD=ld.lld: 使用本机编译器为ld.lld
  • O=out: 构建目录为out,防止污染源码
  • KCFLAGS+=-Wno-error: 在KCFLAGS里追加-Wno-error参数,绝大多数编译内核导致的错误通常都是因为kbuild默认启用了-Werror参数导致,魔改编译器习以为常的代码在原汁原味编译器上会被视为警告,而-Werror参数是默认所有警告都被当做是错误:

然后就可以在arch/arm64/boot下找到Image开头的内核文件了。

如果还是遇到-Werror=xxx的错误呢?

那就编辑根目录下的Makefile,删除所有带有werror的字样,然后重新编译。



-------------本文结束感谢您的阅读-------------



  • Android
  • 内核
  • 编译
  • 速通
  • 教程
  • 奇技淫巧

扫一扫,分享到微信

微信分享二维码
关于高通gunyah虚拟化的一些研究
使用github工作流全自动构建postmarketos刷机包
  1. 1. 1.准备工作
  2. 2. 2.安装依赖
  3. 3. 3.获取源码
  4. 4. 4.确认手机配置文件
  5. 5. 5.克隆源码
  6. 6. 6.编译

预览:

0  字
评论
  • Latest
  • Oldest
  • Hottest
Powered by Waline v2.15.8
© 2025 dpkg123
本站已苟活 2 年 247 天 16 小时 24 分钟 21 秒
Hexo Theme Yilia by Litten
萌ICP备20231955号
  • 所有文章
  • 友情链接
  • 关于我

tag:

  • 3DS
  • linux
  • buildroot
  • kernel
  • android
  • OPPO
  • makefile
  • miui
  • coloros
  • 手机
  • f2fs
  • dtc
  • dtb
  • shell
  • 刷机工具
  • PostmarketOS
  • ROM移植
  • 刷机
  • hexo
  • web前端
  • github
  • 二次元
  • 9008
  • debian
  • C语言
  • 优化
  • gcov
  • perf
  • twrp
  • build
  • Android
  • Root
  • Github
  • CI
  • Linux
  • 网页加速
  • 哔哩哔哩
  • av10492
  • 猎奇
  • 内核
  • 编译
  • TypeScript
  • Github Actions
  • 网页搭建
  • 速通
  • 教程
  • 奇技淫巧
  • 归档
  • 番剧
  • 别当欧尼酱了
  • 杂谈
  • 虚拟化 Android
  • android kernel
  • gki
  • alpine
  • 软件源
  • fastboot
  • vps
  • 联发科
  • KernelSU
  • kvm
  • kernelSU
  • 移植
  • 内核编译
  • Kernel

    缺失模块。
    1、请确保node版本大于6.2
    2、在博客根目录(注意不是yilia根目录)执行以下命令:
    npm i hexo-generator-json-content --save

    3、在根目录_config.yml里添加配置:

      jsonContent:
        meta: false
        pages: false
        posts:
          title: true
          date: true
          path: true
          text: false
          raw: false
          content: false
          slug: false
          updated: false
          comments: false
          link: false
          permalink: false
          excerpt: false
          categories: false
          tags: true
    

  • note现在暂不考虑申请新的友链
  • 图床
  • 留言板
  • 原来的博客
  • Adminzhangの个人博客
  • cyp0633的blog
  • 小码同学
  • U.M.R-Powered-Blog
  • 秋澪Akimio
  • ialtone的小站
  • PiCpo的阁楼
  • artiga033
  • 柏园猫のBlog
  • 欠陥電気の摸鱼小池
  • 洛仙璃の幻梦
  • 木屐落在水洼了
  • 湛蓝的调色板
  • SakuraKooi的Blog
  • 新世界的大门
  • 沨鸾的小窝
  • Revincx
  • JIPA233の小窝
  • Mufanc
  • Fika
  • Pinpe的物语
  • 残夜的小博客
透明小菜鸡一枚<br><br>目前正在学习C++和C<br>正在移植postmarketOS到k30pro上<br>本博客使用github-page作为网页托管平台,netlify提供cdn加速服务。<br>不知道为啥yilia主题改不了下面的文字。<br>总之欢迎来到这里!