免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3608 | 回复: 3
打印 上一主题 下一主题

在内核文件系统中添加一个.c文件和.h文件 ,希望能被编译 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-01-12 14:40 |只看该作者 |倒序浏览
10可用积分
一个.h文件放到了 ~/include/linux/memdump.h 路径下

然后把对应的memdump.c放到了 tcp.c的相同目录下

本以为直接Make就OK
可是报错说找不到memdump,  也就是说没编译这个.c文件

请指教如何使添加的文件能被编译
谢谢

最佳答案

查看完整内容

修改Kconfig和Makefile这个是我以前写的当我们在订制自己的内核的时候很多时候是需要去修改Makefile 和Kconfig 文件来增加自己的模块和驱动 一下是我个人的一点总结 假设我们要在内核源代码 drivers 目录下如下用于 test driver 的树型目录----test |---- cpu |---- cpu.c |---- test.c |---- test_client.c |---- test_ioctl.c |---- test_proc.c |---- test_queue.c在内核中增加目录和子目 ...

论坛徽章:
0
2 [报告]
发表于 2010-01-12 14:40 |只看该作者
修改Kconfig和Makefile

这个是我以前写的
当我们在订制自己的内核的时候很多时候是需要去修改Makefile 和Kconfig 文件来增加自己的模块和驱动

一下是我个人的一点总结

假设我们要在内核源代码 drivers 目录下如下用于 test driver 的树型目录:
|----test
      |---- cpu
      |---- cpu.c
      |---- test.c
      |---- test_client.c
      |---- test_ioctl.c
      |---- test_proc.c
      |---- test_queue.c
在内核中增加目录和子目录,我们需为相应的新增目录创建 Kconfig 和 Makefile 文件,而新增目录的父目录中的 Kconfig 和 Makefile 文件也需要修改,以便新增的 Kconfig 和 Makefile 文件能被引用.
在新增的 test 目录下,应包含如下 Kconfig 文件:
#
# TEST driver configuration
#
menu "Test Driver "
comment "Test Driver"
config TEST
bool "TEST suport"
config TEST_USER
tristate "TEST user-space interface"
depends on TEST
endmenu
由于 TEST driver 对于内核来说是新的功能,所以首先需要创建一个菜单 TEST Driver ;然后显示 "TEST  support " ,等待用户选择;接下来判断用户是否选择了 TEST Driver ,如果是 (CONFIG_TEST=y),则进一步显示子功能:用户接口与CPU功能支持;由于用户接口功能可以被编译成内核模块,所以这里的询问语句使用了 tristate.
为了使这个 Kconfig 文件能起作用,需要修改 drivers/Kconfig 文件,增加以下内容:
source "drivers/test/Kconfig"
脚本中的 source 意味着引用新的 Kconfig 文件.在新增的 test 目录下,应该包含如下 Makefile 文件:
#drivers/test/Makefile
#
#Makefile for the TEST
#
obj-$(CONFIG_TEST) += test.o test_queue.o test_client.o
obj-$(CONFIG_TEST_USER) += test_ioctl.o
obj-$(CONFIG_PROC_FS) += test_proc.o
obj-$(CONFIG_TEST_CPU) += cpu/
该脚本根据配置变量的取值构建 obj-* 列表.由于 test 目录中包含一个子目录 cpu ,当CONFIG_TEST_CPU=y 时,需要将 cpu 目录加入列表.
test 目录中的 cpu 目录也需包含如下的 Makefile 文件:
# drivers/test/cpu/Makefile
#
# Makefile for the TEST cpu
#
obj-$(CONFIG_TEST_CPU) += cpu.o
为了使得整个 test 目录能够被编译命令作用到,  test 目录父目录中的 Makefile 文件也需新增如下脚本:
obj-$(CONFIG_TEST) += test/
增加了 Kconfig 和 Makefile 文件之后的新的 test 树型目录如下所示:
|----test
      |---- cpu
      |---- cpu.c
      |---- Makefile
      |---- test.c
      |---- test_client.c
      |---- test_ioctl.c
      |---- test_proc.c
      |---- test_queue.c
      |---- Makefile
      |---- Kconfig

这样整个工作就算完成了

论坛徽章:
12
2015年辞旧岁徽章
日期:2015-03-03 16:54:1515-16赛季CBA联赛之同曦
日期:2017-03-17 19:13:162016科比退役纪念章
日期:2016-11-07 08:28:12luobin
日期:2016-06-17 17:46:36wusuopu
日期:2016-06-17 17:43:4515-16赛季CBA联赛之福建
日期:2016-01-14 12:49:22程序设计版块每日发帖之星
日期:2015-12-13 06:20:00程序设计版块每日发帖之星
日期:2015-06-08 22:20:00程序设计版块每日发帖之星
日期:2015-06-08 22:20:002015年亚洲杯之科威特
日期:2015-03-24 14:21:272015年迎新春徽章
日期:2015-03-04 09:57:092016科比退役纪念章
日期:2018-04-10 16:20:18
3 [报告]
发表于 2010-01-12 14:51 |只看该作者
得放到Makefile里吧、

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
4 [报告]
发表于 2010-01-12 14:56 |只看该作者
你这个文件是加载某个模块中,还是一个独立的模块啊。
如果是独立的模块,2.6的内核下要记得修改对应目录下的Kconfig和Makefile文件。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP