博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
内核模块 (三) 安卓环境下编译ko文件
阅读量:4286 次
发布时间:2019-05-27

本文共 1888 字,大约阅读时间需要 6 分钟。

  • Makefile
#文件名为Makefileifneq ($(KERNELRELEASE),)# ko 文件名 不能与 目标文件名 相同MODULE_NAME = lkm_testobj-m := $(MODULE_NAME).o#目标文件名# file1.o file2.o dir1/file3.o$(MODULE_NAME)-objs := test.oelse	CODEDIR ?= /home/pop/work/960/960_0424	KERNELDIR ?= $(CODEDIR)/out/target/product/sw960/obj/KERNEL_OBJ	PWD ?= $(shell pwd)	ARCH = arm	CROSS_COMPILE = $(CODEDIR)/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8/bin/arm-eabi-.PHONY: modules cleanmodules:	$(MAKE) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) -C $(KERNELDIR) M=$(PWD) modulesclean:	$(MAKE) -C $(KERNELDIR) SUBDIRS=$(PWD) cleanendif
  • 驱动文件
/*文件名为test.c*/#include 
#include
#include
MODULE_LICENSE("Dual BSD/GPL");static int mytest = 100;module_param(mytest,int,0644);MODULE_PARM_DESC(mytest,"test for module parameter");static int __init hello_init(void){
printk(KERN_ALERT "hello world!\n"); printk(KERN_ALERT "%d\n",mytest); return 0;}static void __exit hello_exit(void){
printk(KERN_ALERT "Goodbye!\n");}module_init(hello_init);module_exit(hello_exit);
  • readme
1. 将该文件夹放入到工程外2. 修改Makefile	CODEDIR ?= /home/pop/work/960/960_0424	修改上行为 你的源码工程所在目录		若要用于其他项目,需要确定交叉编译器的位置并修改 // 去编译生成文件目录下去找 .xxx.o.cmd 文件,查gcc关键字	CROSS_COMPILE = $(CODEDIR)/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8/bin/arm-eabi-3. 在 当前目录执行 make ,回生成 lkm_test.ko	make4. insmod 出现问题	insmod: failed to load lkm_test.ko: Required key not available	https://blog.csdn.net/ozhengsfo/article/details/75114297		在/system/lib/modules目录下,动态安装内核模块时(insmod hello.ko)出现insmod: failed to load hello.ko: Required key not available	解决方法	    在配置文件中关闭内核签名的功能	      kernel/msm-3.18/arch/arm64/configs/msmcortex_defconfig 调试版本	  	  kernel/msm-3.18/arch/arm64/configs/msmcortex-perf_defconfig     非调试版本	      将这两个文件里面的下面三个配置参数关闭		  CONFIG_MODULE_SIG=n		  CONFIG_MODULE_SIG_FORCE=n		  CONFIG_MODULE_SIG_SHA512=n		  重新编译内核,adb和fastboot更新boot.img,就可以进行动态安装模块。
你可能感兴趣的文章
Linux 如何修改 root 密碼
查看>>
nc 傳輸
查看>>
vi 與 vim 的指令整理
查看>>
console & telnet判斷
查看>>
sqlite3
查看>>
關於如何快速切換目錄(Linux)
查看>>
Save Time with minicom macros
查看>>
svn : how to set the executable bit on a file?
查看>>
vim 取代指令
查看>>
git 修改過檔案後,如何commit上server
查看>>
git log 應用
查看>>
Git 版本控制系統(3) 還沒 push 前可以做的事
查看>>
Git 基礎 - 檢視提交的歷史記錄
查看>>
wifi 連ap command
查看>>
git clean reset checkout
查看>>
[轉載]6個超強網站讓你查到最道地的英文
查看>>
HUB 與 Switch 差別
查看>>
linux產生 core dump文件方法及設置
查看>>
How to pass macro definition from “makefile” command line arguments to C source code?
查看>>
英文句型
查看>>