博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
内核源码树
阅读量:6293 次
发布时间:2019-06-22

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

hot3.png

linux驱动编程为什么要编译内核源码树,为什么内核版本跟内核源码树还有不兼容的情况。

第一点,设备驱动程序是内核的一部分,在编写驱动的时候,必定会用到内核的头文件和库。在linux发行版里可能并没有这些东西。

第二个,就算linux发行版里有这些东西,然而不同的内核版本之间,那些接口和调用可能会有比较大的差异,因此必须要保证你的代码和某个特定的内核对应,这样编译出来的模块才可以(也是只能)在运行这个内核版本的Linux系统中加载,否则一个很简单的异常就会导致内核崩溃,或者你的代码根本无法编译通过(接口名变了)。

 如果你只是想为内核编译第三方的模块,那么,你不需要下载内核源码。安装内核头文件包或许会更适合你。但是做嵌入式开发或者驱动开发,一个基本的Linux设备驱动开发环境由宿主机目标机组成,宿主机就是用来做驱动开发工作的主机,目标机就是用来运行和测试设备驱动的主机。这就需要下载内核版本然后编译生成源码树(构造内核源码树,其实就是的过程),以准备好驱动编译所需要的头文件和库(PC上编译的时候,内核有导出符号,系统中有头文件,这样就可以引用内核给你的接口了,但是只能编译你PC上版本的内核可加载的模块)。

转载于:https://my.oschina.net/wuqingyi/blog/830097

你可能感兴趣的文章
this的用法
查看>>
windows下安装redis
查看>>
CentOS7 yum 安装git
查看>>
启动日志中频繁出现以下信息
查看>>
httpd – 对Apache的DFOREGROUND感到困惑
查看>>
分布式锁的一点理解
查看>>
idea的maven项目,install下载重复下载本地库中已有的jar包,而且下载后jar包都是lastupdated问题...
查看>>
2019测试指南-web应用程序安全测试(二)指纹Web服务器
查看>>
树莓派3链接wifi
查看>>
js面向对象编程
查看>>
Ruby中类 模块 单例方法 总结
查看>>
jQuery的validate插件
查看>>
5-4 8 管道符 作业控制 shell变量 环境变量配置
查看>>
Enumberable
查看>>
开发者论坛一周精粹(第五十四期) 求购备案服务号1枚!
查看>>
validate表单验证及自定义方法
查看>>
javascript 中出现missing ) after argument list的错误
查看>>
使用Swagger2构建强大的RESTful API文档(2)(二十三)
查看>>
Docker容器启动报WARNING: IPv4 forwarding is disabled. Networking will not work
查看>>
(转)第三方支付参与者
查看>>