我的编程空间,编程开发者的网络收藏夹
学习永远不晚

编译安卓内核教程(2023,6,13)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

编译安卓内核教程(2023,6,13)

编译安卓内核前需要准备的东西。

  1. 一台支持解锁bootloader的手机
  2. 官方开源地址,或者第三方整合好的也行
  3. 一个linux环境,虚拟机、wsl、termux等都可以
  4. 看得懂中文

开始操作!

一、 从你的手机里面提取config.gz文件,在/proc/config.gz路径,这个文件是构建你手机内核的配置文件,这个默认是官方的,如果没有这个文件,那你需要通过解包boot.img来获取,稍后会说。

二、拉取你官方开源的内核源码以及设备树(安卓9以后,默认只开源内核了,设备树这些,都不再开放了)。

  1. 从你的品牌官方获取开源代码,比如小米开源地址,摩托罗拉开源地址真我手机开源地址。把源码拉取到本地。

  2. 如果你不想用官方的,想用第三方的,比如LineageOS,Crdroid也可以。

  3. 你没有官方开源也没有第三方官方支持,那你可以不用看了,省点流量跟电量,去做别的事情吧- - 。

#git拉取示例#--depth=1代表只拉取最新的源码,可以极大减少拉取后的体积,缩减拉取时间git clone --depth=1 https://github.com/ProjectBlaze-Devices/kernel_xiaomi_chime

三、配置基本构建环境。
1.安装Linux环境。(wsl、vm虚拟机、双系统实体机的Linux,都可以)
2.安装编译工具。
Debian系列:(包括Ubuntu、Linux mint、优麒麟、Uos、termux)

#Debian系列:apt-get install -y bc bison build-essential ccache curl flex g++-multilib gcc-multilib git git-lfs gnupg gperf imagemagicklib32ncurses5-dev lib32readline-dev lib32z1-dev libelf-dev liblz4-tool libncurses5 libncurses5-devlibsdl1.2-dev libssl-dev libxml2 libxml2-utils lzop pngcrush rsyncschedtool squashfs-tools xsltproczip zlib1g-dev

ArchLinux系列

pacman -Syu gitcd ~ git clone https://aur.archlinux.org/aosp-devel.gitcd aosp-develmakepkg -si

其它系列,自行查找对应的工具安装.

拉取内核编译工具(刚刚只是安装基本构建环境,这个编译工具才是重头戏,构建安卓内核的工具,只能从安卓源码里面拉取,而且有版本限制,太新不行,太老了也不行)

  1. 直接去LineageOS的GitHub官方仓库拉取
#官方GitHub拉取git clone https://github.com/LineageOS/android_prebuilts_clang_kernel_linux-x86_clang-r416183b#国内gitee拉取git clone https://gitee.com/SorryMyLife/android_prebuilts_clang_kernel_linux-x86_clang-r416183b#如果你还需要GCC进行编译,那么就拉取这个#arm64git clone https://github.com/LineageOS/android_prebuilts_gcc_linux-x86_aarch64_aarch64-linux-android-4.9#国内giteegit clone https://gitee.com/SorryMyLife/android_prebuilts_gcc_linux-x86_aarch64_aarch64-linux-android-4.9#arm32git clone https://github.com/LineageOS/android_prebuilts_gcc_linux-x86_arm_arm-linux-androideabi-4.9#国内giteegit clone https://gitee.com/SorryMyLife/android_prebuilts_gcc_linux-x86_arm_arm-linux-androideabi-4.9
  1. 去Google source官方拉取

    如果你有才艺,可以直接访问Google

#arm64的gccgit clone https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9#arm32的gccgit clone https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9#arm64的clanggit clone https://android.googlesource.com/platform/prebuilts/clang/host/linux-x86

国内的临时解决方案

git config --global url."https://mirrors.tuna.tsinghua.edu.cn/git/AOSP".insteadOf https://android.googlesource.com#arm64的gccgit clone https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9#上面配置完后,再拉取下面的代码,就可以了#arm32的gccgit clone https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9#arm64的clanggit clone https://android.googlesource.com/platform/prebuilts/clang/host/linux-x86

四、开始构建内核源码

  1. 先去你的内核源码里面看看,有没有config文件。
cd 你的内核源码文件夹/arch/你的设备架构/configs/

一般配置文件会在这里,以你这台设备的代号命名,比如你的手机代号(codename)叫做lime,那么这个位置会有个带lime字母的config文件。

cd 你的内核源码文件夹/arch/你的设备架构/configs/vendor/

有的则是在这个路径下的vendor文件夹里面

设备代号为chime的 示例 (可能会无法访问,最好带才艺进去)

如果里面没有config文件,那么你就需要从你的官方boot里面提取了,先下载或者从你设备提取boot分区出来,上传到Linux环境里面,cd到内核源码里面,执行scripts/extract-ikconfig工具提取config信息。

cd 你的内核源码路径./scripts/extract-ikconfig 你的boot分区文件路径 >> device_configcp device_config arch/你的设备cpu架构/configs/你的设备代号名称_config#或者这样cp device_config arch/你的设备cpu架构/configs/temp_config#取一个临时的名字

解决完config文件后,那么就开始构建内核。

cd 你的内核源码路径#告诉编译器你构建的是arm64的内核,如果你不是64位的,那就把64删掉export ARCH=arm64export SUBARCH=arm64#配置之前同步好的内核编译器环境变量,让当前环境可以直接使用#/home/sir/pstar/kernel/clang是clang编译器的路径#它下面的bin则是可执行二进制文件存放的文件夹,我们需要调用这个里面的程序来开始构建内核export PATH="/home/sir/pstar/kernel/clang/bin:/home/sir/pstar/kernel/gcc64/bin:/home/sir/pstar/kernel/gcc32/bin:$PATH"args="-j$(nproc --all) \ #-j$(nproc --all)这里是说用当年环境下最高的cpu线程进行编译ARCH=arm64 \ SUBARCH=arm64 \O=out \ #输出路径是在当前位置的out文件夹CC=clang \ #指定C语言文件编译器为clangCROSS_COMPILE=aarch64-linux-android- \ #配置交叉编译的目标平台为arm64CROSS_COMPILE_ARM32=arm-linux-androideabi- \ #配置32位交叉编译器CLANG_TRIPLE=aarch64-linux-gnu- " #负责交叉编译的Linux编译器#这个也不清楚干嘛用的,就是它在构建的时候,需要用到Linux的一些标准库内容#但是安卓的编译器阉割了,直接用安卓的编译,会出现很多莫名其妙的错误,所以就需要再配置一下这个编译器了#如果你的设备是32位的,这里也要修改的#清理之前构建的残留内容make clean && make mrproper#删除out文件夹,也就是之前指定输出的文件夹rm -rf out #新建out文件夹,用来保存临时产生的垃圾文件还有最终生成的内核文件mkdir -p out#先检测配置文件有没有问题,进行初次构建make ${args} vendor/lineageos_pstar_defconfig #这里如果不加vendor,就会读取#内核源码/arch/你的设备架构/configs/里面的配置文件#这个完整路径为: 内核源码/arch/你的设备架构/configs/vendor/lineageos_pstar_defconfig #不加vendor的完整路径为:内核源码/arch/你的设备架构/configs/lineageos_pstar_defconfig #这里的args就是上面设置的临时变量args里面的内容#开始构建内核make ${args} 

构建内核中如果出现一些报错,你应该去GitHub里面搜索,而不是用百度

构建完成的内核文件会根据不同的压缩规则存放在:

你的内核源码/out/arch/你的设备架构/boot/

END

参考文章:小米开源 摩托罗拉开源

来源地址:https://blog.csdn.net/sorry_my_life/article/details/131191804

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

编译安卓内核教程(2023,6,13)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

编译安卓内核教程(2023,6,13)

编译安卓内核前需要准备的东西。 一台支持解锁bootloader的手机官方开源地址,或者第三方整合好的也行一个linux环境,虚拟机、wsl、termux等都可以看得懂中文 开始操作! 一、 从你的手机里面提取config.gz文件,在/p
2023-08-17

Linux编译内核的过程

本篇内容主要讲解“Linux编译内核的过程”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux编译内核的过程”吧!Linux编译内核 准备工作 通常要运行的第一个命令是: #cd /usr/
2023-06-13

Linux内核怎么编译和安装

这篇文章主要介绍“Linux内核怎么编译和安装”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Linux内核怎么编译和安装”文章能帮助大家解决问题。Linux内核介绍Linux发行版是在Linux内核
2023-06-28

CentOS内核的编译与安装方法

本篇内容介绍了“CentOS内核的编译与安装方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Linux 内核简介现在让我们从一个比较高的高
2023-06-10

CentOS 5.5下怎么编译安装新内核

这篇文章主要为大家展示了“CentOS 5.5下怎么编译安装新内核”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“CentOS 5.5下怎么编译安装新内核”这篇文章吧。第一步:下载内核传送门:地址
2023-06-10

linux内核编译安装的方法是什么

Linux内核编译安装的方法如下:1. 下载内核源代码:在Linux官方网站(https://www.kernel.org/)或其他来源下载最新版本的内核源代码。2. 解压源代码:使用tar命令解压下载的内核源代码压缩包。3. 配置内核选项
2023-09-25

Linux下nginx编译安装教程

本篇内容介绍了“Linux下nginx编译安装教程”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、必要软件准备1.安装pcre为了支持re
2023-06-05

Android内核源码 在Ubuntu上下载,编译,安装

从源代码树下载下来的最新Android源代码,是不包括内核代码的,也就是Android源代码工程默认不包含Linux Kernel代码,而是使用预先编译好的内核,也就是prebuilt/android-arm/kernel/kernel-q
2022-06-06

VS2022编译安装Qt6.5源码教程

这篇文章主要介绍了VS2022编译安装Qt6.5源码,在这里解压方式可以使用7z解压,也可以使用MinGW中的tar进行解压,本文给大家介绍的非常详细,需要的朋友可以参考下
2023-05-20

目录下Apache PHP编译安装教程

目录下Apache PHP编译安装教程1. 简介在搭建网站服务器时,Apache和PHP是两个常用的软件。本教程将介绍如何在Linux系统下,通过编译源代码的方式安装Apache和PHP,以便更灵活地配置和定制。2. 安装Apache
目录下Apache PHP编译安装教程
2024-03-09

linux 编译安装python3.6的教程详解

1. 首先去官网 https://www.python.org/downloads/source/ 下载 Gzipped source tarball不要下载 " XZ compressed source ta
2022-06-04

Ubuntu源码编译安装Apache的教程

这篇文章主要讲解了“Ubuntu源码编译安装Apache的教程”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Ubuntu源码编译安装Apache的教程”吧!apache 安装指南:http:
2023-06-05

ubuntu16.04 linux 编译安装apache2.4.33的教程详解

下载软件包:wget http://mirror.bit.edu.cn/apache//httpd/httpd-2.4.33.tar.gz wget http://mirrors.tuna.tsinghua.edu.cn/apache//a
2022-06-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录