一个hello程序的android内核模块编译方法及在模拟器中进行测试结论

hello module source:

#include <linux/init.h>

#include <linux/module.h>

static int hello_init(void)

{

       printk(KERN_ALERT "Hello,world\n");

       return 0;

}

static void hello_exit(void)

{

       printk(KERN_ALERT "Goodbye, cruel world\n");

}

module_init(hello_init);

module_exit(hello_exit);

compile hello.ko module Makefile code:

obj-m := hello.o

all:

       make ARCH=arm EXTRA_CFLAGS="-D_CONFIG_ARM_ -fno-pic" -C $(KDIR) M=$(PWD) modules

clean:

       $(MAKE) -C $(KDIR) M=$(PWD) cleanhe

Make hello.ko function:

make CROSS_COMPILE=arm-linux-androideabi- KDIR=/opt/hackandroid/goldfish_0228

NOTE: KDIR is kernel path.  what's kernel path??? please refer to :http://blog.csdn.net/yygydjkthh/article/details/20172023

tested on android emulator:

run android emulator:

emulator -avd Android4.2.2 -kernel arch/arm/boot/zImage

push hello.ko to emulator:

testhello$ adb push hello.ko /data/local

60 KB/s (2648 bytes in 0.042s)

NOTE: what is zImage? How get the zImage???  please refer to : http://blog.csdn.net/yygydjkthh/article/details/20172023

testhello$ adb shell

root@android:/# cd data/local/                                                

root@android:/data/local # ls

hello.ko

root@android:/data/local # insmod hello.ko                                    

root@android:/data/local # dmesg -c                                            

<1>Hello,world

root@android:/data/local # lsmod                                              

hello 702 0 - Live 0x00000000 (PO)

root@android:/data/local # rmmod hello                                        

root@android:/data/local # dmesg -c                                          

<1>Goodbye, cruel world

root@android:/data/local # lsmod

root@android:/data/local #

<1>Hello,world

so, that's ok,  good night :_).

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/OS/extra/

时间: 2024-11-01 11:57:24

一个hello程序的android内核模块编译方法及在模拟器中进行测试结论的相关文章

Android软件怎么反编译?Android反编译方法

工具下载地址:http://pan.baidu.com/s/1qYMiLp6   将你的apk添加到压缩文件,比如zmit.rar,然后解压,会出现下图的文件: 将classes.dex放到dex2jar-0.0.9.15文件夹下,在这个文件夹下,有一个dex2jar.bat文件,打开控制台,定位到dex2jar-0.0.9.15文件夹,假设此文件夹在桌面上:如下图: 输入dex2jar.bat   classes.dex 效果如下图: 这时候在此目录就会生成一个classes_dex2jar.

C#程序Bug的快速修复方法

本文将为大家介绍一下如何对C#程序Bug修复的快速方法..net Framework中包含许多工具可以用来更快.更容易地编写正确的程序.但我们得面临这样的情况:出现bugs.不管程序多么简单,程序员都可能出错. 根据我的经验,大多数程序的bugs出现在程序员之间的接口:当一个程序员编写的代码被另一个程序员调用时.不知何故,调用者破坏了代码编写时做的假设.是谁的过错呢?这并不要紧,更重要的是你能多快修好它?下面这些技巧将帮你在程序投入使用前更快地发现并解决这些问题.最终,这些技巧会帮你诊断任何的确

boost全平台编译方法

1.通用规则 多数库是不需要预先编译的,include hpp文件就能用.如果出现链接失败,那就是可能需要编译库了. boost自带一套编译工具bjam,bjam本身是跨平台的,并且也要自行编译出来.在boost目录下有bootstrap.sh和bootstrap.bat两个脚本分别用来编译*nix和windows下的bjam.bootstrap脚本可以传入参数,以在编译bjam过程中生成特定的编译boost的配置.这些配置保存在新生成的project-config.jam里,但还可以在运行bj

第一个JAVA程序

前面几篇博文介绍了JAVA的特点以及开发工具集,从这篇开始,我们真正的学习JAVA的语法等知识.本篇将介绍如何使用记事本编写我们的第一个JAVA程序并通过控制台编译运行. 第一步: 新建文本文档,编辑内容如下所示: /** * 我的第一个Java程序 */ public class HelloWorld { /** * 程序入口方法 */ public static void main(String[] args) { //在控制台输出Hello World! System.out.printl

android内核-编译好的linux驱动模块向android手机的linux内核中insmod时错误

问题描述 编译好的linux驱动模块向android手机的linux内核中insmod时错误 我编写了一个helloworld.ko的驱动模块,编译成功后向手机中insmod时报错,错误提示为version magic '2.6.35.7_hi3716m mod_unload ARMv7 ' should be '3.3.6_hi3716m mod_unload ARMv7 p2v8 ',请问怎么解决?还有ARMv7后的p2v8是什么意思? 解决方案 应该是内核版本不对?

c代码调试-如何避免程序调试进入反编译状态

问题描述 如何避免程序调试进入反编译状态 自己在eclipse中调试一些c语言程序的时候,设置了断点,并在引入源码包的基础上进行调试,但总是会进入反编译状态,而不是在自己设置的断点处停下来,哪位大神帮忙解答一下啊,万分感谢啊

一个c++程序,编译没错。运行后出现错误 debug assertion failed

问题描述 一个c++程序,编译没错.运行后出现错误 debug assertion failed 具体错误如图 解决方案 VC++调程序出现如下错误: Debug Assertion Failed! Program: D:wyuStuddebugwyuStud.exe File: afx.inl Line:157 可能问题:1.野指针;2.内存泄露 解决方法: 1.看一看你的程序里是不是有ASSERT()或VERIFY()语句.这两个宏是用来测试它的参数是否为真的.出现你说的,这说明你的指针或表

简单的Android之apk包反编译方法

网上相关的文章一大堆了,我只是总结下自己的反编译方法和工具 工具下载地址: http://download.csdn.net/detail/zsjangel/7104663 下载上面的三个工具的压缩包 Apktool_v1.5.1_CHS_By_b-sf.rar  dex2jar.zip jd-gui-0.3.5.windows.zip 一.反编译 xml 等模版资源文件. 解压 apktool 包,然后将你要反编译的 apk 文件拖放到 ApkModify.bat  文件上就自动反编译了,这个

Android编程判断应用程序是否已安装的方法_Android

本文实例讲述了Android编程判断应用程序是否已安装的方法.分享给大家供大家参考,具体如下: 这里以twitter程序为例,假设twitter程序包名为"com.twitter.android".这时候可用以下代码来判断是否被安装. PackageInfo packageInfo; try { packageInfo = this.getPackageManager().getPackageInfo( "com.twitter.android", 0); } ca