热门标签 | 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.




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


推荐阅读
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • Linux设备驱动程序:异步时间操作与调度机制
    本文介绍了Linux内核中的几种异步延迟操作方法,包括内核定时器、tasklet机制和工作队列。这些机制允许在未来的某个时间点执行任务,而无需阻塞当前线程,从而提高系统的响应性和效率。 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 在Ubuntu 16.04 LTS上配置Qt Creator开发环境
    本文详细介绍了如何在Ubuntu 16.04 LTS系统中安装和配置Qt Creator,涵盖了从下载到安装的全过程,并提供了常见问题的解决方案。 ... [详细]
  • XNA 3.0 游戏编程:从 XML 文件加载数据
    本文介绍如何在 XNA 3.0 游戏项目中从 XML 文件加载数据。我们将探讨如何将 XML 数据序列化为二进制文件,并通过内容管道加载到游戏中。此外,还会涉及自定义类型读取器和写入器的实现。 ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 本章将深入探讨移动 UI 设计的核心原则,帮助开发者构建简洁、高效且用户友好的界面。通过学习设计规则和用户体验优化技巧,您将能够创建出既美观又实用的移动应用。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 解决微信电脑版无法刷朋友圈问题:使用安卓远程投屏方案
    在工作期间想要浏览微信和朋友圈却不太方便?虽然微信电脑版目前不支持直接刷朋友圈,但通过远程投屏技术,可以轻松实现在电脑上操作安卓设备的功能。 ... [详细]
  • andr ... [详细]
  • 本文详细记录了在银河麒麟操作系统和龙芯架构上使用 Qt 5.15.2 进行项目打包时遇到的问题及解决方案,特别关注于 linuxdeployqt 工具的应用。 ... [详细]
  • 并发编程:深入理解设计原理与优化
    本文探讨了并发编程中的关键设计原则,特别是Java内存模型(JMM)的happens-before规则及其对多线程编程的影响。文章详细介绍了DCL双重检查锁定模式的问题及解决方案,并总结了不同处理器和内存模型之间的关系,旨在为程序员提供更深入的理解和最佳实践。 ... [详细]
  • 本文由瀚高PG实验室撰写,详细介绍了如何在PostgreSQL中创建、管理和删除模式。文章涵盖了创建模式的基本命令、public模式的特性、权限设置以及通过角色对象简化操作的方法。 ... [详细]
  • 尽管使用TensorFlow和PyTorch等成熟框架可以显著降低实现递归神经网络(RNN)的门槛,但对于初学者来说,理解其底层原理至关重要。本文将引导您使用NumPy从头构建一个用于自然语言处理(NLP)的RNN模型。 ... [详细]
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社区 版权所有