2 greatliu2009 GreatLiu2009 于 2014.12.05 12:47 提问

linux内核模块N多文件Makefile写法

现在有一个大型的用户层驱动程序(目标文件是一个.o) 要移植到内核层,以模块的形式加载。那么问题来了,如此多的源文件还是必须按照内核模块Makefile那样:
obj-m: mode.o
mode.o-y: a.o b.o c.o d.o .....
这种方式吗?那不是整个驱动的代码结构都要重构?所有的源文件里的头文件目录也有重写?这不科学啊。。。。肯定还有其它的办法对不对?!虽对内核模块有一定的了解但实际干的事很少,所以在此向大神们虚心请教!

1个回答

eagleyan
eagleyan   Rxr 2014.12.06 05:45

不明白你的问题,这个和代码结构有什么关系,你难道不是通过insmod 去增加你的驱动么。你原来是.o文件,现在编译成.ko就好了啊

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
关于linux内核模块编程时,多个源代码文件Makefile书写的问题
在学习内核模块编程的时候遇到了一些由于Makefile书写不正确导致的问题。一个.c源文件的Makefile按照网上的大部分资料介绍那样是没有问题的,多个源文件的内核模块编程时,就出现问题了,自己纠结了半天,最后查资料、请教大神才搞定的。把过程和解决方法贴出来,供大家参考,一起学习。 网上有很多文章讲解内核模块编程的例子,例如下面这个简单的例子: #hello.c #ifndef __KE
内核模块开发中makefile的制作(多文件)
main.c #include #include //MODULE_LICENSE("GPL"); //MODULE_AUTHOR("CFC"); //MODULE_DESCRIPTION("Hello Linux"); //MODULE_ALIAS("a simple module"); extern int add(int a,int b); static int
通过make编译多文件的内核模块
转载至:http://edsionte.com/techblog/archives/4059 之前对make的使用都仅局限于单个文件,比如用make编译单个文件的内核模块。我试着将一个程序分解成多个文件,然后再通过make进行多文件的编译,途中还是遇到一些列问题,因此总结成下文。 1.文件清单 下面的文件清单类出的是一个内核模块程序,我们这里不去深究这个模块的功能。procfs_mod.c主
内核模块的基本编写以及Makefile的编写
前面讲了内核模块怎么安装和卸载,那么现在就正式讲解一下内核模块怎么编写。 以一个在内核中打印出”hello world”到终端的例子讲解。 1、  首先要写模块加载时的入口函数和模块卸载时的入口函数 static  int  hello_init() {            printk(“hello  world\n”);            return 0; }   s
linux内核模块范例代码及Makefile写法步骤
一 内核模块介绍在介绍一个简单的内核hello world模块前,我们需要了解一下在嵌入式系统中内核模块到底是一个什么东东。linux内核是模块化组成的,它允许内核在运行时动态地向其中插入或从中删除代码。这些代码(包括相关的子线程、数据、函数入口和函数出口)被一并组合在一个单独的二进制镜像中,即所谓的可装载内核模块中,或简称为模块。这段是度娘的解释,简单来说,内核模块就是不被编译进内核的文件,在内核
Linux驱动(多文件)的Makefile实现
方式1常用于编写,调试阶段。驱动源码的文件夹位置独立自由,只要在Makefile中指定好Linux内核源码的路径。方式2常用于最后集成阶段,在调试基本完成后,可以将驱动源代码文件(夹)放置在Linux内核源码的driver/xxx/的相应路径中,修改本层和上层的Makefile和KConfig文件,并重新make menuconfig内核,可以在Menu中选中新加入的驱动模块,然后make module,就可以在驱动源码文件夹生成.ko文件。方式1:ifeq ($(KERNELRELEASE),) K
linux驱动开发-模块多文件编译
多个文件的模块的编译,
Linux 驱动开发之内核模块开发 (二)—— 内核模块编译 Makefile 入门
一、模块的编译        我们在前面内核编译中驱动移植那块,讲到驱动编译分为静态编译和动态编译;静态编译即为将驱动直接编译进内核,动态编译即为将驱动编译成模块。 而动态编译又分为两种: a -- 内部编译        在内核源码目录内编译 b -- 外部编译        在内核源码的目录外编译 二、具体编译过程分析            注:本次编译是外部编译,使用
3. 内核模块的Makefile
1.  内核模块的Makefile若要编译hello的内核模块,最简单的方法就是要编写如下内容的Makefile(若对Makefile比较陌生,请参考Linux开发基础讲义):-----------------------------------------------------------------------ifeq ($(KERNELRELEASE),)KERNELDIR
编译Linux内核模块的简单Makefile
编译Linux内核模块的一个简单Makefile,能实现一个模块的编译,只要把其中的KERNELDIR后面的路径修改为自己的内核源码路径。