您的位置 首页 厂商

Linux内核开发工具的介绍

众所周知,Linux内核是使用make命令来配置并编译的,那必然少不了Makefile。如此复杂、庞大的内核源码绝不可能使用一个或几个Makefile文件来完成配置

众所周知,Linux内核是运用make指令来装备并编译的,那必定少不了Makefile。如此杂乱、巨大的内核源码绝不或许运用一个或几个Makefile文件来完结装备编译,而是需求一套相同杂乱、巨大,且为Linux内核定制的Makefile体系。

虽然她是一个杂乱的体系,但对绝大部分内核开发者来说只需求知道怎么运用,而无需了解其间的细节。她对绝大部分内核开发者基本上是通明的,躲藏了大部分完结细节,有效地降低了开发者的担负,能使其能专心于内核开发,而不至于花费时刻和精力在编译进程上。

1.1 Linux内核中的Makefile文件

1.1.1 顶层Makefile

源码目录树顶层Makefile是整个内核源码办理的进口,对整个内核的源码编译起着决议性效果。编译内核时,顶层Makefile会按规矩递归历遍内核源码的一切子目录下的Makefile文件,完结各子目录下内核模块的编译。了解一下该Makefile,对内核编译等方面会有所协助。

1. 内核版别号

翻开顶层Makefile,最初的几行记录了内核源码的版别号,一般如下所示:


阐明代码版别为2.6.35.3,编译得到的内核在方针板运转后,输入uname -a指令能够得到印证

2. 编译操控

(1)体系结构

Linux是一个支撑很多体系结构的操作体系,在编译进程中需指定体系结构,以与实践渠道对应。在顶层Makefile中,经过变量ARCH来指定:

假如没有在编译指令行中指定ARCH参数,体系将会进行本地编译,经过获取本机信息来主动指定:


假如进行ARM嵌入式Linux开发,则有必要指定ARCH为arm(留意大小写,须与arch/目录下的arm共同),如:

当然,也能够修正Makefile,将修正为ARCH ?= $(SUBARCH)修正为ARCH = arm,在指令行直接make即可。

(2)编译器

假如不是进行本地编译,则须指定穿插编译器,经过CROSS_COMPILE来指定。Makefile中与穿插编译器的指定如下:


CONFIG_CROSS_COMPILE是一个装备选项,可在内核装备时分指定。假如在装备内核时分没有指定CONFIG_CROSS_COMPILE,也没有在编译参数指定CROSS_COMPILE,则会选用本地编译器进行编译。

进行ARM嵌入式Linux开发,有必要指定穿插编译器,能够在内核装备经过CONFIG

_CROSS_COMPILE指定穿插编译器,也能够经过CROSS_COMPILE指定。假定运用的穿插编译器是arm-linux-gnueabihf-gcc,则指定CROSS_COMPILE为arm-linux-gnueabihf-:

或许在Makefile中,直接指定CROSS_COMPILE的值:

留意:CROSS_COMPILE指定的穿插编译器有必要事前装置并正确设置体系环境变量;假如没有设置环境变量,则需运用肯定地址,例如:

假如一起指定了ARCH和CROSS_COMPILE,则在编译的时分,只需简略的make就能够了。

1.1.2 子目录的Makefile

在内核源码的子目录中,简直每个子目录都有相应的Makefile文件,办理着对应目录下的代码。对该目录的文件或许子目录的编译操控,Makefile中有两种表明方法,一种是默许挑选编译,用obj-y表明,如:

另一种表明则与内核装备选项相关联,编译与否以及编译方法取决于内核装备,例如:

是否编译wdt.c文件,或许以何种方法编译,取决于内核装备后的变量CONFIG_WDT值:假如在装备中设置为[*],则静态编译到内核,假如装备为[M],则编译为wdt.ko模块,否则不编译。

阐明:受控方针是一个目录,obj-y并不直接决议受控目录的文件以及子目录的文件,仅仅是与受控目录Makefile交互,实践编译操控在受控子目录的Makefile中。例如“obj-y += gpio/”,终究gpio目录下哪些文件被编译,彻底取决于gpio目录下的Makefile。“obj-$(CONFIG_PCI) += pci/”的意义同理。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/148770.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部