为什么要构造内核源码树?编写驱动程序时必须建立内核树?

编写驱动程序时为什么必须建立内核树,在网上查了,要先下载内核源码,在进行编译!这里的内核源码树指的是什么?我的电脑明明装的就是linux,为什么还要下载源码(不都已经安装... 编写驱动程序时为什么必须建立内核树,在网上查了,要先下载内核源码,在进行编译!
这里的内核源码树指的是什么?
我的电脑明明装的就是linux,为什么还要下载源码(不都已经安装完成了吗),然后在进行编译呢,已经下载了最新的源码,编译之后不会对本机已经安装的linux系统有影响吗?

刚刚接触linux,麻烦知道的朋友在帮忙介绍下内核源码树和电脑已经安装的linux有什么区别呢?
展开
 我来答
高能小子
2013-02-26 · TA获得超过149个赞
知道答主
回答量:15
采纳率:0%
帮助的人:9.4万
展开全部
首先回答:
已经下载了最新的源码,编译之后不会对本机已经安装的linux系统有影响吗?

不会有影响,只是占用了一点存储空间。

这里的内核源码树指的是什么?

就是源码树中有相应的头文件和函数的实现,没有源码树,自己写的应用程序就没办法执行起来。

我的电脑明明装的就是linux,为什么还要下载源码(不都已经安装完成了吗)
我们做linux开发一般在PC机上编译好了,下到板子上去运行,板子上的linux内核和PC机上的linux版本很多时候都是不一样的,比如pc机上的是linux2.6,板子上的是linux3.1,这个时候就要下linux3.1的内核,用它编译的驱动模块在板子上才能加载上,不然会出错。在编译内核模块时可以指定是用PC自带的linux内核,还是自己下载的linux内核;这个在Makefile文件中设置的,比如KERN_DIR=/usr/src/linux-headers-3.2.0-29-generic-pae
如果不设置就是用系统自带的;

如果就在PC机上运行,不下到板子上就不用下载linux内核源码树了。
不知解释清楚了没,亲
追问
源码树中有相应的头文件和函数的实现,没有源码树,自己写的应用程序就没办法执行起来。
假如我写了linux的驱动程序,里面用到了源码树中的头文件和函数,想下载到板子上或者别的linux系统上运行,那么板子上没用源码树啊,别的linux上也没有构造源码树呢,那我的驱动程序怎么运行啊,是不是我写的驱动程序就要和linux系统一起安装到板子上或者PC机呢?然后就直接用系统中的头文件和函数呢?那自己写的驱动也没有通用性了啊?
追答
自己写的linux驱动程序是无法单独运行的,就是因缺少相应的数据、库的支持,要以模块的形式加载进内核,才能运行起来,或者直接把驱动编译进内核,然后编译内核,下到板子上就能运行了。这部分看下内核裁剪的内容。
板子上要有内核引导程序,一般为u-boot,内核镜像,根文件系统,就能正常运行了,像pc机一样。如果你写过驱动程序就知道,驱动程序中自己写的要包含哪些头文件,都是在源码树下的文件夹里,这个都包含在内核里了,和uImage一起下到板子上了,所以板子上不需要源码树。
通用性的问题,自己写的一般不怎么通用,大都针对哪个具体设备写的。通用性的代码已经有很多linux大牛帮我们写好了。
该给分了吗,亲,口水都干了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式