linux kernel 模块多文件编译

/***************************************************************************
 *                      linux kernel 模块多文件编译
 * 声明:
 *     本文主要是记录在调试驱动的阶段,我们可能会更倾向于使用模块插入的方式
 * 来进行驱动调试,这样可以大大缩短调试时间。之前在调试gt9xx Touch的时候也
 * 是采用这种方式,这里还是记录一下,日后方便查找。
 *
 *                                          2016-2-2 深圳 南山平山村 曾剑锋
 **************************************************************************/

一、cat Makefile
    ifneq ($(KERNELRELEASE),)
        # gt9xxm.o去掉后缀就是生成的.ko的名字
        # 多文件编译注意gt9xxm.o、gt9xxm-objs的命名方式
        obj-m := gt9xxm.o
        gt9xxm-objs := gt9xx.o gt9xx_update.o goodix_tool.o
    else
    KDIR := /home/zengjf/kernel   # 指定内核所在的目录
    all:
        make -C $(KDIR) M=$(PWD) modules

    clean:
        rm -f *.ko *.o *.mod.o *.mod.c *.symvers *.order
    endif

二、输出结果:
    [email protected]:~/kernel/drivers/input/touchscreen/gt9xx$ ls -al
    total 2348
    drwxrwxr-x 3 zengjf zengjf   4096 Jan 26 20:14 .
    drwxrwxr-x 3 zengjf zengjf   4096 Jan 27 18:40 ..
    -rwxrw-rw- 1 zengjf zengjf  37261 Jan 26 11:50 goodix_tool.c
    -rw-rw-r-- 1 zengjf zengjf 124592 Jan 26 11:50 goodix_tool.o
    -rw-rw-r-- 1 zengjf zengjf  29395 Jan 26 11:50 .goodix_tool.o.cmd
    -rwxrw-rw- 1 zengjf zengjf  89249 Jan 26 20:14 gt9xx.c
    -rwxrw-rw- 1 zengjf zengjf 309322 Nov 28  2014 gt9xx_firmware.h
    -rwxrw-rw- 1 zengjf zengjf  12086 Jan 26 11:50 gt9xx.h
    -rw-rw-r-- 1 zengjf zengjf 559323 Jan 26 11:50 gt9xxm.ko
    -rw-rw-r-- 1 zengjf zengjf    427 Jan 26 11:50 .gt9xxm.ko.cmd
    -rw-rw-r-- 1 zengjf zengjf   2477 Jan 26 11:50 gt9xxm.mod.c
    -rw-rw-r-- 1 zengjf zengjf  23044 Jan 26 11:50 gt9xxm.mod.o
    -rw-rw-r-- 1 zengjf zengjf  18307 Jan 26 11:50 .gt9xxm.mod.o.cmd
    -rw-rw-r-- 1 zengjf zengjf 537572 Jan 26 11:50 gt9xxm.o
    -rw-rw-r-- 1 zengjf zengjf    434 Jan 26 11:50 .gt9xxm.o.cmd
    -rw-rw-r-- 1 zengjf zengjf 178752 Jan 26 11:50 gt9xx.o
    -rw-rw-r-- 1 zengjf zengjf  29794 Jan 26 11:50 .gt9xx.o.cmd
    -rwxrw-rw- 1 zengjf zengjf 120272 Nov 28  2014 gt9xx_update.c
    -rw-rw-r-- 1 zengjf zengjf 240220 Jan 26 11:50 gt9xx_update.o
    -rw-rw-r-- 1 zengjf zengjf  29626 Jan 26 11:50 .gt9xx_update.o.cmd
    -rw-rw-r-- 1 zengjf zengjf    239 Jan 25 17:20 Makefile
    -rw-rw-r-- 1 zengjf zengjf     73 Jan 26 11:50 modules.order
    -rw-rw-r-- 1 zengjf zengjf      0 Jan 25 17:01 Module.symvers
    drwxrwxr-x 2 zengjf zengjf   4096 Jan 26 11:50 .tmp_versions
    [email protected]:~/kernel/drivers/input/touchscreen/gt9xx$ 
时间: 2024-08-06 11:57:36

linux kernel 模块多文件编译的相关文章

Linux Kernel 模块内存泄露查找 (2)

在之前的一篇博文<<Linux Kernel模块内存泄露的一种查找思路>>中,我介绍了一种查找内核内存泄露的一种方法.这不才几个月,又有客户埋怨:使用了产品5天左右后,Suse服务器由于内存耗尽而Crash.O My God,不会吧,在我机器上跑的好好的哇(程序员常用名言 嘿嘿). 那么就让我们一起来看看,苦逼的博主是如何确定问题并且找到问题的.... 一. 确定问题 第一步,我们要做的是,确定这个问题和产品的Kernel模块有关系.首先根据客户描述,如果停止我们产品,则不会出现内

Android 如何在linux kernel 中读写文件

前言 欢迎大家我分享和推荐好用的代码段~~ 声明 欢迎转载,但请保留文章原始出处: CSDN:http://www.csdn.net 雨季o莫忧离:http://blog.csdn.net/luckkof 正文 [Description] 如何在linux kernel 中读写文件 [Keyword] linux kernel read write file 读写文件 [Solution] 通常我们只会在linux native/app 层 读写文件,但可能有一些非常特别的情况下,我们需要直接在

Android 怎样在linux kernel 中读写文件

前言 欢迎大家我分享和推荐好用的代码段~~ 声明 欢迎转载,但请保留文章原始出处: CSDN:http://www.csdn.net 雨季o莫忧离:http://blog.csdn.net/luckkof 正文 [Description] 怎样在linux kernel 中读写文件 [Keyword] linux kernel read write file 读写文件 [Solution] 通常我们仅仅会在linux native/app 层 读写文件,但可能有一些很特别的情况下,我们须要直接在

CentOS启动流程、Grub legacy配置、linux kernel模块管理、伪文件系统介绍

写在前面: 博客书写牢记5W1H法则:What,Why,When,Where,Who,How. 本篇主要内容: ● 启动相关基础概念汇总 ● 启动流程 ● init程序类型     /etc/rc.d/rc     chkconfig     /etc/rc.d/rc.sysinit ● GRUB legacy     命令行接口     配置文件 ● Linux Kernel     内核模块查看与管理         lsmod         modinfo         modprob

Linux Kernel 4.2.2 编译安装教程

安装linux的最新内核其实不难,搞linux就不要怕尝试. 我配置是AMD Athlon X2 64 4600+的处理器和DDR2 2GB的内存条,系统为Xubuntu 15.04. 现在我与大家分享一下经验,由于我写这个帖子的时候,4.2.2是最新的正式版内核,所以就以4.2.2为例了. 首先去官网下载4.2.2的内核包,官网地址:https://www.kernel.org/ linux-4.2.2.tar.gz官网下载地址:https://www.kernel.org/pub/linux

Linux kernel 模块 hello 测试

原文链接:https://www.cnblogs.com/nerohwang/p/3621316.html hello.c 文件: #include <linux/kernel.h> /*Needed by all modules*/ #include <linux/module.h> /*Needed for KERN_* */ #include <linux/init.h> /* Needed for the macros */ MODULE_LICENSE(&qu

Linux kernel模块管理相关详解

一.Linux内核模块化设计 1.Linux内核设计:单内核.模块化(动态装载和卸载) (1 )Linux:单内核设计,但充分借鉴了微内核体系的设计的优点:为内核引入了模块化机制: (2) 内核的组成部分: kernel:内核核心,一般为bzImage格式,通常位于/boot目录,名称为vmlinuz-VERSION-release: 当系统启动之后该文件就不在使用,因为已经加载到内存,放置/boot下方便管理 kernel object:内核模块,一般放置于/lib/modules/VERSI

linux kernel 的配置及编译

1. 执行make menuconfig 配置内核 2. 执行make zImage 编译内核 3. 执行make modules 编译模块 4. 内核源代码的配置及编译系统 Makefile Kconfig 配置脚本工具 实例在内核中增加程序: (1) 将源代码放到内核的相应目录下 (2) 在目录的Kconfig文件中增加关于新代码对应项目的配置选项 (3) 在目录的Makefile文件中增加关于新代码的编译条目 实例移植内核到arm: (1) 搭建编译环境 (2) 修改Makefile 使得

linux C下多文件编译,以及Makefile的使用

由于在C语言中,不能把所有的代码都放在一个.c文件里面,这样这个.c文件会很大,而且代码维护起来会很麻烦. 于是在网上找了些C语言多文件编程的示例,记录下我的学习过程. 我们可以把我们的代码按功能进行划分,一些源文件存放函数的实现,一些头文件声明这些函数,这样代码会更有条理. 头文件的大致格式: #ifndef _ABC_H_ #define _ABC_H_ //以上代码是为了防止这个头文件被多次包含,确保名字唯一 //宏定义 #define _MAX 100 //结果体声明 typedef s