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

_Wayne_ 2014-12-05 12:51:21
现在有一个大型的用户层驱动程序(目标文件是一个.o) 要移植到内核层,以模块的形式加载。那么问题来了,如此多的源文件还是必须按照内核模块Makefile那样:
obj-m: mode.o
mode.o-y: a.o b.o c.o d.o .....
这种方式吗?那不是整个驱动的代码结构都要重构?所有的源文件里的头文件目录也有重写?这不科学啊。。。。肯定还有其它的办法对不对?!虽对内核模块有一定的了解但实际干的事很少,所以在此向大神们虚心请教!
...全文
705 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
_Wayne_ 2015-03-18
  • 打赏
  • 举报
回复
代码的路径不变,因为有什么的头文件引用路径要修改,因此就在源目录的情况下使用内核的编译方式。那么就参考了chinaunix上一位大神的shell脚本来列出所有源文件,再加入需要的头文件路径编译参数就可以了。


羽飞 2014-12-11
  • 打赏
  • 举报
回复
Makefile可以自己搜索依赖文件,也可以分模块写多个Makefile文件,Makefile文件之间可以互相引用,可以调用shell,自动搜索目录下的c源文件。
zacharyLiu 2014-12-11
  • 打赏
  • 举报
回复
取决于你本身Makefile里面的路径是不是相对路径?如果是,就很简单了,如果不是,只能自己去修改,很麻烦的!
故都 2014-12-06
  • 打赏
  • 举报
回复
不晓得你们在聊啥。。 用户层怎么会有驱动程序了? 就算把用户层的程序放到内核中去,修改下makefile,改下程序的一些代码, 编译生产.ko放到内核中去,再在启动脚本上加上该模块的启动文件。 若是想把该程序和内核一起编译,就把上述修改后的Makefile和code的文件夹放到kernel的某个文件中,再在上层的makefile的默认目标中添加上该文件的执行的脚本,该复制的复制,该移动的移动 ,该干什么的干什么啊 。。怎么牵扯到了所有的源文件了
zhxianbin 2014-12-05
  • 打赏
  • 举报
回复
应该是这样吧,代码结构不需要重构吧
zhxianbin 2014-12-05
  • 打赏
  • 举报
回复
引用 2 楼 GreatLiu2009 的回复:
[quote=引用 1 楼 zhxianbin 的回复:] 应该是这样吧,代码结构不需要重构吧
是在现有的目录结构上递归加上类似的Kconfig 和Makefile就可以了?[/quote] 我想是这样,写上相对 Makefile 的路径就行了, path/to/a.o path/to/b.o path/to/c.o d.o
_Wayne_ 2014-12-05
  • 打赏
  • 举报
回复
引用 1 楼 zhxianbin 的回复:
应该是这样吧,代码结构不需要重构吧
是在现有的目录结构上递归加上类似的Kconfig 和Makefile就可以了?

1,318

社区成员

发帖
与我相关
我的任务
社区描述
主要是开发驱动技术
社区管理员
  • 驱动程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧