如何给Linux内核添加自己的头文件?

sherlock_lai 2008-05-08 03:54:31
我写了一个字符驱动模块(比较大),在这个驱动模块中包含了一些自己的头文件(内核库里没有的),这个驱动编译是通过的,但是在insmod的时候出现unresolved symbol,我想应该就是内核库中没有我的头文件的关系,我直接把我的这些头文件放到内核源码的include文件夹中再编译内核,但是没用,insmod时还是同样错误,请教高人要怎么做啊?
...全文
1126 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
sherlock_lai 2008-05-13
  • 打赏
  • 举报
回复
等上去 待解决
sherlock_lai 2008-05-11
  • 打赏
  • 举报
回复
驱动模块在加载和使用的时候才会链接函数库,所以编译的时候包含了头文件能通过,但是内核库里没有,就会出现unresolved symbol,还有EXPORT_SYMBOL只有内核里有这个函数你才可能EXPORT。。。看来有些人没搞清楚我的问题,Focus老兄 比较清楚
goodyun82 2008-05-10
  • 打赏
  • 举报
回复
unresolved symbol肯定不是没有包含同文件的问题。如果是没有包含头文件,那么应该是编译就出错。你的问题应该是用到其他模块或者是内核的变量和函数。用EXPORT_SYMBOL,具体用法就到网上查吧,到处都是。
sherlock_lai 2008-05-09
  • 打赏
  • 举报
回复
就是比如printk 函数,可以给驱动模块调用,我就想在内核中增加一些函数能给驱动模块调用的,要怎么做?
zj888 2008-05-09
  • 打赏
  • 举报
回复
编译通过了,insmod有unresolved symbol,要检查一下是不是引用了extern符号
sherlock_lai 2008-05-08
  • 打赏
  • 举报
回复
楼上的,驱动中用到的函数应该一般都是在进内核的时候才链接到内核的函数库的,如果你直接include *.c,那么函数就存在你的*.o文件里了,那样驱动会很大
linux scr 是起什么作用的?
我的意思是我函数要编译进内核,然后给驱动调用的,不是给用户用的,这些函数是不是直接放在linux源码的lib下就行了? 还有Makefile要怎么改?
sherlock_lai 2008-05-08
  • 打赏
  • 举报
回复
试了include.c可以的。。。我没用linux时都这么做,但是用了linux怎么也得弄个库进去才规范吧
弄个库到内核好象要修改Makefile的? 哪个高人来指点下怎么修改 哪里有资料?
sherlock_lai 2008-05-08
  • 打赏
  • 举报
回复
楼上的 你的意思是把用到的函数生成库文件放到linux源码里? 头文件放到linux源码的include文件夹下,库函数放到源码的lib文件夹下,然后编译内核,这样会自动生成库文件吗? 是否要修改linux源码的Makefile?

等会试试直接include .c

4,465

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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