博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux内核驱动将多个C文件编译成一个ko文件的方法——每一个C文件中都有module_init与module_exit...
阅读量:4661 次
发布时间:2019-06-09

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

以两个C文件为例:

将本该被分别编译成adc_device.ko和adc_driver.ko的adc_device.c、adc_driver.c编译成一个ko文件!

採用方法:

第一步、改动C文件

1、去掉adc_device.c文件中module_init(xxx)、module_exit(yyy)中xxx、yyy 函数原型的keywordstatic
2、注销adc_device.c文件中module_init(xxx)、module_exit(yyy)函数
3、在adc_driver.c文件中加入用keywordextern声明的上述xxx、yyy函数
4、在adc_driver.c文件中module_init(mmm)、module_exit(nnn)中mmm、nnn 函数原型合适地方调用xxx、yyy函数
注意:当把多个C文件编译成一个.ko文件时, C文件中的module_init、module_exit 会提示重定义。
     故一个ko里边仅仅能有一个module_init和一个module_exit!

 

第二步、编写Makefile文件(关键部分)

obj-m += adc.o

adc-objs := adc_device.o  adc_driver.o

就这样。将本该被分别编译成adc_device.ko和adc_driver.ko的adc_device.c、adc_driver.c

编译成一个adc.ko文件!

转载于:https://www.cnblogs.com/mfrbuaa/p/5149317.html

你可能感兴趣的文章
Spring MVC 拦截器
查看>>
android:ToolBar详解
查看>>
Android Spinner的五个部分
查看>>
研究Mysql优化得出一些建设性的方案
查看>>
POJ 2378 Tree Cutting (树的重心,微变形)
查看>>
SQL联查-转载
查看>>
Linux ssldump命令
查看>>
BZOJ4350: 括号序列再战猪猪侠【区间DP】
查看>>
silverlight Image Source URI : 一个反斜杠引发的血案
查看>>
《剑指offer》二叉树的深度
查看>>
【SQL Server 学习系列】-- 获取字符串中出现某字符的次数及字符某次出现的下标...
查看>>
树状数组2模板 Luogu 3368
查看>>
iOS App的状态
查看>>
C# 实现escape功能
查看>>
linux基础命令2(ls,cd)
查看>>
面向对象初识
查看>>
Word 2010中查找和替换功能高级技巧(转)
查看>>
优先队列
查看>>
堆内存破坏检测实战--附完整调试过程
查看>>
【knockoutjs】 Computed VS Pure Computed 区别
查看>>