热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

用5个简单的步骤编译我们自己的安卓内核

用5个简单的步骤编译我们自己的安卓内核原文:https://

用 5 个简单的步骤编译我们自己的安卓内核

原文:https://www . geeksforgeeks . org/编译-我们自己的-安卓-5 步内核-简单/

安卓内核帮助应用程序与设备的硬件组件进行通信。

比如:


  1. Most of us are familiar with game mode . Its function is to instruct the processor and graphics processing unit to run at the maximum frequency.

  2. Another example is power saving mode . It instructs the processor and graphics processing unit to run at their minimum frequency.

需要编译我们自己的内核: 编译我们自己的内核可能会非常有用,因为:


  • Use our own kernel.

  • The user experience can be further optimized as needed, which is also helpful for open source development .

编译我们自己的内核的步骤:


  1. Prerequisites: The following are prerequisites for compiling our own Android kernel:


    • Ubuntu or any other Linux-based OS

    • Familiar with basic Linux command

    • 阿金·阿金·阿金·阿金·阿金·阿金·阿金·阿金·阿金·阿金·阿金·阿金·阿金·阿金·阿金·阿金·阿金·阿金·阿金 Github

    • Equipment [Source code [T2】 T30 Open the terminal and paste it as follows:

      java
      sudo apt-get install
           git ccache automake flex lzop bison \
           gperf build-essential zip curl
               zlib1g-dev zlib1g-dev:i386 \
           g++-multilib python-networkx 
               libxml2-utils bzip2 libbz2-dev \
           libbz2-1.0 libghc-bzlib-dev 
               squashfs-tools pngcrush \
           schedtool dpkg-dev liblz4-tool 
               make optipng maven libssl-dev \
           pwgen libswitch-perl policycoreutils 
               minicom libxml-sax-base-perl \
           libxml-simple-perl bc
               libc6-dev-i386 lib32ncurses5-dev \
           x11proto-core-dev libx11-dev 
               lib32z-dev libgl1-mesa-dev xsltproc unzip
      ](https://www.geeksforgeeks.org/language-processors-assembler-compiler-and-interpreter/)
      * Download required documents:
      * Clone the device source on the local disk:

      ```java
      mkdir mykernel
        git clone {link to your device kernel source}
      ```



      • Download a compatible GCC tool chain. In this paper, GCC of AOSP is used.

        java
        cd mykernel
           git clone https://android.googlesource.com/platform/
                     prebuilts/gcc/linux-x86/aarch64/
                     aarch64-linux-android-4.9
           toolchain


      • Download a compatible CLANG tool chain. This paper uses Clang of AOSP.


      • Move the downloaded file to the mykernel folder , and then use the following command to extract it:

        java
        tar vxzf linux-x86-android-9.0.0_r48-clang-4691093.tar.gz




    • 编译内核:

      ```java
      cd mykernel
      rm -rf out
      mkdir out
      export ARCH=arm64
      export SUBARCH=arm64
      export DTC_EXT=dtc

      make O=out ARCH=arm64 {device defconfig}

      PATH="${PWD}/bin:${PWD}/toolchain/bin:${PATH}" \
      make -j$(nproc --all) O=out \
                            ARCH=arm64 \
                            CC=clang \
                            CLANG_TRIPLE=aarch64-linux-gnu- \
                            CROSS_COMPILE=aarch64-linux-android-
                            | tee kernel.log
      ```

      在这里,将{device defconfig}替换为您的配置文件的名称。您可以在/arch/arm64/configs 文件夹中找到它。


    • Boot the compiled kernel:


      • Browse to /out/arch/ARM64/boot , find image-DTB file (compiled zImage) and copy it.

      • Download Android mirror kitchen and decompile your stock boot image. Once you decompile it, you will find the stock code in the decompiled folder. Replace it with the previously copied one and recompile the boot image.

      • Flash Fast boot uses the following commands:

        java
        fastboot flash boot mykernel.img




    • Error encountered in processing: A kernel.log file will be generated in mykernel folder. Find the wrong line and find a solution. Also, please don't forget to attach the log file when posting for help in the forum.




这将是基本的内核,一旦它成功启动,可以添加更多的功能。


推荐阅读
  • 深入浅出TensorFlow数据读写机制
    本文详细介绍TensorFlow中的数据读写操作,包括TFRecord文件的创建与读取,以及数据集(dataset)的相关概念和使用方法。 ... [详细]
  • 在项目部署后,Node.js 进程可能会遇到不可预见的错误并崩溃。为了及时通知开发人员进行问题排查,我们可以利用 nodemailer 插件来发送邮件提醒。本文将详细介绍如何配置和使用 nodemailer 实现这一功能。 ... [详细]
  • Coursera ML 机器学习
    2019独角兽企业重金招聘Python工程师标准线性回归算法计算过程CostFunction梯度下降算法多变量回归![选择特征](https:static.oschina.n ... [详细]
  • 本文介绍了如何在 Node.js 中使用 `setDefaultEncoding` 方法为可写流设置默认编码,并提供了详细的语法说明和示例代码。 ... [详细]
  • Redux入门指南
    本文介绍Redux的基本概念和工作原理,帮助初学者理解如何使用Redux管理应用程序的状态。Redux是一个用于JavaScript应用的状态管理库,特别适用于React项目。 ... [详细]
  • yikesnews第11期:微软Office两个0day和一个提权0day
    点击阅读原文可点击链接根据法国大选被黑客干扰,发送了带漏洞的文档Trumps_Attack_on_Syria_English.docx而此漏洞与ESET&FireEy ... [详细]
  • Symfony是一个功能强大的PHP框架,以其依赖注入(DI)特性著称。许多流行的PHP框架如Drupal和Laravel的核心组件都基于Symfony构建。本文将详细介绍Symfony的安装方法及其基本使用。 ... [详细]
  • 并发编程 12—— 任务取消与关闭 之 shutdownNow 的局限性
    Java并发编程实践目录并发编程01——ThreadLocal并发编程02——ConcurrentHashMap并发编程03——阻塞队列和生产者-消费者模式并发编程04——闭锁Co ... [详细]
  • 本文详细介绍了如何在Linux系统中创建和管理DB2数据库,包括用户切换、数据库创建、错误处理、连接与断开、表空间和缓冲池的创建,以及用户权限管理和数据导入导出等操作。 ... [详细]
  • 本文深入探讨了UNIX/Linux系统中的进程间通信(IPC)机制,包括消息传递、同步和共享内存等。详细介绍了管道(Pipe)、有名管道(FIFO)、Posix和System V消息队列、互斥锁与条件变量、读写锁、信号量以及共享内存的使用方法和应用场景。 ... [详细]
  • 本文详细介绍如何在 Windows 环境下安装 Ubuntu 12.04 版本的 Linux 操作系统,包括必要的软件下载、配置步骤以及注意事项。 ... [详细]
  • JavaScript 中创建对象的多种方法
    本文详细介绍了 JavaScript 中创建对象的几种常见方式,包括对象字面量、构造函数和 Object.create 方法,并提供了示例代码和属性描述符的解释。 ... [详细]
  • 本文详细介绍了如何在Ubuntu的Enlightenment (E17) 桌面环境中管理和优化桌面图标及根菜单。通过本文,您将了解这些功能的作用及其配置方法。 ... [详细]
  • 搭建Jenkins、Ant与TestNG集成环境
    本文详细介绍了如何在Ubuntu 16.04系统上配置Jenkins、Ant和TestNG的集成开发环境,涵盖从安装到配置的具体步骤,并提供了创建Windows Slave节点及项目构建的指南。 ... [详细]
  • docker镜像重启_docker怎么启动镜像dock ... [详细]
author-avatar
爱你一辈子2502860605
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有