社区
Linux_Kernel
帖子详情
如何给Linux内核添加自己的头文件?
sherlock_lai
2008-05-08 03:54:31
我写了一个字符驱动模块(比较大),在这个驱动模块中包含了一些自己的头文件(内核库里没有的),这个驱动编译是通过的,但是在insmod的时候出现unresolved symbol,我想应该就是内核库中没有我的头文件的关系,我直接把我的这些头文件放到内核源码的include文件夹中再编译内核,但是没用,insmod时还是同样错误,请教高人要怎么做啊?
...全文
1090
11
打赏
收藏
如何给Linux内核添加自己的头文件?
我写了一个字符驱动模块(比较大),在这个驱动模块中包含了一些自己的头文件(内核库里没有的),这个驱动编译是通过的,但是在insmod的时候出现unresolved symbol,我想应该就是内核库中没有我的头文件的关系,我直接把我的这些头文件放到内核源码的include文件夹中再编译内核,但是没用,insmod时还是同样错误,请教高人要怎么做啊?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
Linux
设备树(device tree)
设备树(device tree)机制是
Linux
内核
从
linux
-3.x版本开始引进的一种机制,目的是解决
内核
源码的arch/arm目录下代码混乱的问题:随着ARM生态的快速发展,在
内核
源码的arch/arm目录下,存放着几十种arm芯片和几百个开发板相关的源文件,很多开发板和处理器的中断、寄存器等相关硬件资源都在这个目录下以.c或.h的文件格式定义。而对于
内核
来说,与这些硬件耦合,会导致
内核
代码混乱不堪,每个开发板上运行的
内核
镜像都必须单独编译配置,无法通用。什么时候
Linux
内核
能像Windows镜像那样,无论你的电脑什么配置,一个Windows安装包,都可以直接下载安装运行呢?设备树机制,实现了
Linux
内核
和硬件平台的解耦:每个硬件平台的硬件资源使用一个设备树文件(xxx.dts)来描述,而不是在arch/arm下以.c 或 .h 文件来定义。
Linux
内核
是一个通用的
内核
,在启动过程中,在通过解析设备树中的硬件资源来初始化某个具体的平台。 引入设备树后,很多和
内核
驱动开发的工作也发生了变化:以往驱动工程师关注的
头文件
宏定义、寄存器定义,现在这些基本上不用关注,关注的重点则转向了如何根据硬件平台去配置和修改设备树文件。很多驱动的编程接口也发生了变化,开始慢慢使用device tree提供的编程接口去开发驱动。本期课程主要面向嵌入式开发人员,分享
Linux
下驱动开发所需要的设备树知识和必备技能
Kali
Linux
编译新的
内核
头文件
Kali
Linux
编译
内核
头文件
下载
内核
头文件
更新配置编译
内核
头文件
编译成功 在此,先明确一下 “
内核
” 与 “
内核
头文件
” 二者的含义。
内核
即操作系统的
内核
,
内核
头文件
时定义了
内核
组件间的接口,以及定义了
内核
与用户空间的接口。
内核
头文件
的版本本身不需要非常严格地与
内核
版本保持一致,只需小于或等于
内核
版本。否则如果使用了比
内核
版本更高的
内核
头文件
,可能会导致低版本的
内核
不支持一些接口。 其实在编译新
内核
时可以不必编译新的
内核
头文件
。但是编译一个新的更匹配版本的
内核
头文件
的话可以支持更多接口。 下载
内核
glibc的
头文件
linux
_
Linux
内核
头文件
Linux
内核
头文件
概述:在进行有关系统软件的安装的时候(编译一个新的驱动,或者安装一个系统级别的测试工具,例如systemtap),经常需要重新编译
内核
,相应的问题往往与
内核
头文件
有关。那么,什么是
内核
头文件
,为什么需要更新
内核
头文件
?
内核
头文件
作用是什么,如何更新?本文主要为你解答这些疑问。1.
内核
头文件
的发展历史 在
Linux
2.2/2.4 的纯真年代,
内核
头文件
一直保持着 Un...
linux
内核
头文件
linux
kernel header
概述:在进行有关系统软件的安装的时候(编译一个新的驱动,或者安装一个系统级别的测试工具,例如systemtap),经常需要重新编译
内核
,相应的问题往往与
内核
头文件
有关。那么,什么是
内核
头文件
,为什么需要更新
内核
头文件
?
内核
头文件
作用是什么,如何更新?本文主要为你解答这些疑问。 1.
内核
头文件
的发展历史 在
Linux
2.2/2.4 的纯真年代,
内核
头文件
一直保持着...
内核
makefile自定义
头文件
添加
- [
linux
内核
]
本文转载自Wanderer_zjHit的文章,原文链接为:http://www.blogbus.com/wanderer-zjhit-logs/178290410.html 版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明 http://www.blogbus.com/wanderer-zjhit-logs/178290410.html 1 参考kbuil
Linux_Kernel
4,438
社区成员
17,460
社区内容
发帖
与我相关
我的任务
Linux_Kernel
Linux/Unix社区 内核源代码研究区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章