zoukankan      html  css  js  c++  java
  • 在Ubuntu上下载、编译和安装Android 4.2 最新内核源代码(Linux Kernel)

    根据http://blog.csdn.net/luoshengyang/article/details/6564592博客内容对android4.2的编译

    从源代码树下载下来的最新Android源代码,是不包括内核代码的,也就是Android源代码工程默认不包含Linux Kernel代码,而是使用预先编译好的内核,也就是prebuilt/qemu_kernel/arm/kernel-qemu文件。以下介绍如下编译android的Linux内核。

    一、首先,根据http://source.android.com/source/initializing.html下载Android源代码,并进行编译。

    二、然后,下载Linux Kernel for Android源代码。

    1、使用GIT工具下载,执行以下命令:

    USER-NAME@MACHINE-NAME:~/my_android$ mkdir kernel

    USER-NAME@MACHINE-NAME:~/my_android$ cd kernel

    USER-NAME@MACHINE-NAME:~/my_android/kernel$ git clone https://android.googlesource.com/kernel/goldfish.git
         同样是经过漫长的等待后,在kernel目录下有一个goldfish目录,Linux内核代码就在这里了。

     
    2、下载完成后,可以查看下载的内核代码版本:
         USER-NAME@MACHINE-NAME:~/my_android/kernel$ cd  goldfish
         USER-NAME@MACHINE-NAME:~/my_android/kernel/goldfish$ git  branch
         * master

    3、 上面得到的是主线上的内核源代码,现在我们需要适用于模拟器用的内核,因此,我们需要checkout goldfish版本:
          USER-NAME@MACHINE-NAME:~/my_android/kernel/goldfish$ git branch -a       

    * master
      remotes/origin/HEAD -> origin/master
      remotes/origin/android-goldfish-2.6.29
      remotes/origin/android-goldfish-3.4
      remotes/origin/linux-goldfish-3.0-wip
      remotes/origin/master

     
          选择remotes/origin/android-goldfish-3.4:
          USER-NAME@MACHINE-NAME:~/my_android/kernel/goldfish$ git checkout remotes/origin/android-goldfish-3.4

    三、编译内核代码。
    1、导出交叉编译工具目录到$PATH环境变量中去:
    USER-NAME@MACHINE-NAME:~/my_android/kernel/goldfish$ export PATH=$PATH:~/my_android/prebuilds/gcc/linux-x86/arm/arm-eabi-4.6/bin
    或者
    USER-NAME@MACHINE-NAME:~/my_android/kernel/goldfish$ export PATH=$PATH:~/my_android/prebuilds/gcc/linux-x86/arm/arm-eabi-4.6/bin

    2、 使用如下的命令来构建goldfish内核
    $ export ARCH=arm
    $ export SUBARCH=arm
    $ export CROSS_COMPILE=arm-eabi-

    3、现在是要得到android的内核编译参数的配置文件的时候了,该文件需要从已经安装好的android的模拟器
    中得到才行。所以安装android的sdk也是必须的,这一步不太明白的朋友可以参考我以前发的android
    命令行体验的文章。
    首先启动android模拟器,然后通过adb得到模拟器中提供的内核配置文件:
    USER-NAME@MACHINE-NAME:emulator &
    USER-NAME@MACHINE-NAME:adb pull /proc/config.gz .

    这时候adb工具会连接模拟器,并从它里面下载一个叫做config.gz的文件到你的当前目录下。
    把它拷贝到你的kernel/goldfish目录:
    USER-NAME@MACHINE-NAME:cd ~/my_android/kernel/goldfish
    USER-NAME@MACHINE-NAME:cp ~/config.gz

    解压缩该文件,并重命名为.config,这一步做了就可以跳过make menuconfig之类的内核参数设置
    动作了。
       USER-NAME@MACHINE-NAME:gunzip config.gz
    USER-NAME@MACHINE-NAME:mv config .config

    该步骤比较重要,若通过make goldfish_defconfig产生的.config来编译的内核可能无法在emulator中运行。

    4、 开始编译:
          USER-NAME@MACHINE-NAME:~/my_android/kernel/goldfish$ make goldfish_defconfig(若操作了第3步,则该命令可省略)
    USER-NAME@MACHINE-NAME:~/my_android/kernel/goldfish$ make
         
         编译成功后,可看到下面两行:
          OBJCOPY arch/arm/boot/zImage
          Kernel: arch/arm/boot/zImage is ready
          在执行make命令前,你也可以执行make menuconfig先配置一下编译选项。

    四、在模拟器中运行编译好的内核。
    1、在启动模拟器之前,先设置模拟器的目录到环境变量$PATH中去:
    USER-NAME@MACHINE-NAME:~/my_android$ export PATH=$PATH:~/my_android/out/host/linux-x86/bin

    2、设置ANDROID_PRODUCT_OUT环境变量
    USER-NAME@MACHINE-NAME:~/my_androidexport ANDROID_PRODUCT_OUT=~/my_android/out/target/product/generic

    3、 在后台中指定内核文件启动模拟器:
    USER-NAME@MACHINE-NAME:~/my_android emulator -kernel ./kernel/goldfish/arch/arm/boot/zImage &

    4、用adb工具连接模拟器,查看内核版本信息,看看模拟器上跑的内核是不是我们刚才编译出来的内核:
          USER-NAME@MACHINE-NAME:~/my_android$ adb shell
          这时候如果是第一次运行 adb shell命令,会看到以下输出,不用管它,再运行一次adb shell命令就可以了。
          * daemon not running. start it now on port 5037 *
          * daemon started successfully *
          error: device offline

         切换到proc目录:
          root@ generic:/ # cd proc
          root@generic:/proc #  cat version
          Linux version 3.4.0-g39765bd (fantasy@ubuntu) (gcc version 4.6.x-google 20120106 (prerelease) (GCC) ) #2 PREEMPT Fri Jun 14 23:09:45 CST 2013
        从机器名 fantasy@ubuntu和日期  Fri Jun 14 23:09:45 CST 2013可以看出,模拟器使用的内核即为刚刚编译出来的内核。

    root@android:/proc # cat cu

    参考:

    1.http://blog.csdn.net/luoshengyang/article/details/6564592

    2.http://source.android.com/source/building-kernels.html

    3.http://blog.csdn.net/farce/article/details/5901531

  • 相关阅读:
    英文词频统计
    字符串练习
    第八周
    第七周
    第五周
    第六周
    第三周
    第四周
    第二周
    第一周作业
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3137647.html
Copyright © 2011-2022 走看看