`
asdf314159265
  • 浏览: 241026 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

编译Android内核模块

阅读更多
Android内核模块的编译与普通Linux内核的编译稍有不同
1.下载android内核

#如果git需要使用代理可以使用如下命令
export https_proxy="http://192.168.1.105:8087"

git clone https://android.googlesource.com/kernel/goldfish.git

上面得到的是主线上的内核源代码,现在我们需要适用于模拟器用的内核,因此,我们需要checkout goldfish版本:
cd  goldfish
git branch -a   //查看branch

git checkout remotes/origin/android-goldfish-3.4

2.下载交叉编译工具
git clone https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6
设置环境变量
export PATH=$PATH:/home/alan/workspace/arm_toolchain/arm-eabi-4.6/bin
export ARCH=arm
export SUBARCH=arm
export CROSS_COMPILE=arm-eabi-

3、现在是要得到android的内核编译参数的配置文件的时候了,该文件需要从已经安装好的android的模拟器
配置文件在模拟器的"/proc/config.gz"目录,pull出来,解压,将config文件改名为.config,拷贝到内核代码goldfish目录下。

这是在goldfish目录下make,可编译内核

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

下面讲解编译内核模块

1.在内核源码drives目录下添加hello目录,内含hello.c Kconfig Makefile文件
hello.c
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>

MODULE_LICENSE("Dual BSD/GPL");

static int hello_init (void)
{
	printk("hello linux kernel\n");
	return 0;
}

static void hello_exit (void) 
{
    printk("bye..lwave from the kernel\n");
}

module_init(hello_init);
module_exit(hello_exit);


Kconfig
config HELLO
tristate "Helllo module test created by lz"  
default m
help
	test for adding driver to menuconfig


Makefile
KERNELDIR :=/home/alan/workspace/android_kernel/goldfish
PWD :=$(shell pwd)
ARCH=arm
CROSS_COMPILE=arm-eabi-
CC=$(CROSS_COMPILE)gcc
LD=$(CROSS_COMPILE)ld
obj-$(CONFIG_HELLO) +=hello.o


1.通过给下面的Kconfig文件再加上下面的代码,可使hello项出现在配置菜单中:

(1)在arch/arm/Kconfig文件中 menu "Device Drivers" endmenu之间添加  source "drivers/hello/Kconfig"(这个文件好像没有menu "Device Drivers" endmenu,要自己写)

menu "Device Drivers"
source "drivers/hello/Kconfig"
endmenu


(2)在drivers/Kconfig文件中 menu "Device Drivers" endmenu之间添加 source "drivers/hello/Kconfig"

2.修改Drivers目录下的Makefile文件,添加如下行:
obj-$(CONFIG_HELLO) += hello/ 
当CONFIG_HELLO为y或m时,使系统能找到hello驱动的makefile

以上过程完成便将hello模块添加至内核menuconfig菜单,注意格式与上下文保持一致

这是在goldfish目录下make,则模块在
drivers/hello/目录的hello.ko

分享到:
评论

相关推荐

    linux 内核配置机制

    前面我们介绍模块编程的时候介绍了驱动进入内核有两种方式:模块和直接编译进内核,并介绍了模块的一种编译方式——在一个独立的文件夹通过makefile配合内核源码路径完成 那么如何将驱动直接编译进内核呢? 在我们...

    模拟器专用android kernel2.6 (支持netfilter,ko文件加载与卸载)

    可支持内核模块文件(ko文件)的加载与卸载; 同时完美支持netfilter) 2.还有个编译此内核时使用的config文件。(供各位想自己编译的人参考) 使用方法: 1.如何让android模拟器运行时使用自己编译的内核? 首先进入...

    AndroidChromium:来自Chrome开放项目的Android版本的Chrome浏览器

    Android Studio作为开发环境,从Chromium for Android从chrome模块源代码加入Android项目。 在Chrome环境中构建本机代码,因此将文件加入Android项目 在Chrome环境中将基本模块(基础,内容,网络等)构建到jar包中...

    [14本经典Android开发教程]-8-Linux内核阅读心得体会

    读核感悟 kbuild系统 内核模块的编译 22 读核感悟 kbuild系统 编译到内核和编译成模块的区别 24 读核感悟 kbuild系统 make bzImage的过程 26 读核感悟 kbuild系统 make menuconfig 31 读核感悟 文件系统 用C来实现...

    《Android系统源代码情景分析》

    1.4.2 编译Android内核源代码 1.4.3 运行Android模拟器 1.5 开发第一个Android应用程序 1.6 单独编译和打包Android应用程序模块 1.6.1 导入单独编译模块的mmm命令 1.6.2 单独编译Android应用程序模块 ...

    Android底层开发技术实战详解--内核、移植和驱动.(电子工业.王振丽).part3

    本书从底层原理开始讲起,结合真实的案例向读者详细介绍了android内核、移植和驱动开发的整个流程。全书分为19章,依次讲解驱动移植的必要性,何为hal层深入分析,goldfish、msm、map内核和驱动解析,显示系统、输入...

    Android系统移植技术详解

    android系统开发(四)-触摸屏tslib移植(内核)和原理分析 32 android系统开发(五)-tslib移植 47 Ubuntu下svn安装和使用 50 android系统开发(七)-背光模块 56 android系统开发(八)-SDCARD 61 android系统开发(九)-Audio...

    Android系统源代码情景分析-罗升阳-源码

    1.4.2 编译Android内核源代码 1.4.3 运行Android模拟器 1.5 开发第一个Android应用程序 1.6 单独编译和打包Android应用程序模块 1.6.1 导入单独编译模块的mmm命令 1.6.2 单独编译Android应用程序模块 1.6.3 ...

    Android底层开发技术实战详解--内核、移植和驱动.(电子工业.王振丽).part1

    本书从底层原理开始讲起,结合真实的案例向读者详细介绍了android内核、移植和驱动开发的整个流程。全书分为19章,依次讲解驱动移植的必要性,何为hal层深入分析,goldfish、msm、map内核和驱动解析,显示系统、输入...

    Android驱动开发权威指南

    第4章Linux内核编程与内核模块 4.1 Linux内核源代码目录结构 4.2 Linux内核的编译与启动 4.3 Linux内核的C编程 4.4 Linux内核模块基础与骨架 4.5 Linux模块的加载与卸载 4.6 Linux模块的参数与导出符号 4.7 Linux...

    基于Android的智能手机的设计与实现

    对于Android文件系统制作,需要编译Android源码得到内容,和普通Linux文件系统制作有所区别;对于驱动,Android下驱动和Linux驱动不完全相同,比如Android音频系统中对路由的选择可以通过配置文件实现,再比如...

    Android底层开发技术实战详解--内核、移植和驱动.(电子工业.王振丽).part2

    本书从底层原理开始讲起,结合真实的案例向读者详细介绍了android内核、移植和驱动开发的整个流程。全书分为19章,依次讲解驱动移植的必要性,何为hal层深入分析,goldfish、msm、map内核和驱动解析,显示系统、输入...

    Sate4412开发板用户手册(linux android 编译开发环境搭建)V1.4.1.pdf

    交叉编译工具 Arm-2009q3(gcc 4.4.1) 文件系统格式 RAMDISK, Ext4 GUI Google Android 4.0.4 ICS 软件功能支持 支持3D图形显像(Mali-400 MP) 支持1080P视频播放 支持Flash player V11网页Flash播放 支持HDMI1.4...

    android系统原理及开发要点详解

     第3章“Android的Linux内核与驱动程序”,介绍Android内核的特点、Android中使用的专用驱动程序、Android系统可能使用的标准设备驱动。  第4章“Android的底层库和程序”,介绍Android系统的基础程序,以本地程序...

    基于ARM Cortex-A8和Android 4.x的联动报警系统 (Android 、A8、Linux、驱动、NDK)

    第二部分内容,先简单讲解Android系统移植相关原理,然后一步步手把手教大家如何进行Linux内核移植、Android源码编译、以及Android到Cortex A8开发板的移植;第三部分内容,先教大家如何搭建裸机开发环境,然后带领...

    EC20-linux-driver-pcie-ubuntu16.04

    ko 是编译好的模块,如果你版本相同,直接安装这个就可以。 do.sh 是编译步骤。按照 Quectel_WCDMA&LTE;_Linux&Android;_GobiNet_Driver_V1.3.0/Quectel_WCDMA&LTE;_Linux_USB_Driver_User_Guide_V1.7.pdf 说明一致...

    ARM Cortex-A8和Android 4.x联动报警系统

    第二部分内容,先简单讲解Android系统移植相关原理,然后一步步手把手教大家如何进行Linux内核移植、Android源码编译、以及Android到Cortex A8开发板的移植;第三部分内容,先教大家如何搭建裸机开发环境,然后带领...

    新版Android开发教程.rar

    ----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...

    android系统原理及开发要点详解_韩超_梁泉 4

     第3章“Android的Linux内核与驱动程序”,介绍Android内核的特点、Android中使用的专用驱动程序、Android系统可能使用的标准设备驱动。  第4章“Android的底层库和程序”,介绍Android系统的基础程序,以本地程序...

Global site tag (gtag.js) - Google Analytics