为什么要构造内核源码树?编写驱动时必须简历内核树吗?

问:

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

刚刚接触linux,麻烦知道朋友帮忙介绍下内核源码树河电脑已经安装l的inux有什么区别呢。
 
答:
首先回答:1、已经下载了最新的源码,编译之后会不会对本机已经安装linux系统有影响呢?
	  答:不会有影响,只是占用了一点存储空间
	2、这里的内核源码树指的是什么?
	  答:就是源码树中有相应的头文件和函数实现,没有源码树,自己写的应用程序就没办法执行起来。
	3、我电脑明明装的就是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机一样。如果你写过驱动程序就知道了,驱动程序中自己写的要包含那些头文件,都是在源码树下的文件夹里,这个都包含在内核了,和ulmage一起下到板子上了,所以板子上不需要源码树。
通用性的问题,自己写的一般不怎么通用,大都针对哪个具体设备写的。通用性的代码已经有很多linux大牛帮我们写好了。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值