读书频道 > 系统 > linux > 深度探索Linux操作系统系统构建和原理解析
3.3.1 交叉编译内核设置
2013-09-28 16:23:35     我来说两句 
收藏    我要投稿   
全书一共8章:第1章介绍了如何准备工作环境。在第2章中构建了编译工具链,这是后面构建操作系统各个组件的基础。在这一章中,不仅详细讲解了工具链的构建过程,而且还通过对编译链接过程的探讨,深入讨论了工具链  立即去当当网订购

在默认情况下,内核构建系统默认内核是本地编译,即编译的内核是运行在与宿主系统相同的体系架构上。如果是为其他的架构编译内核,即交叉编译,我们需要设置两个变量:ARCH和CROSS_COMPILE。其中:

ARCH指明目标体系架构,即编译好的内核运行在什么平台上,如x86、arm或mips等。

CROSS_COMPILE指定使用的交叉编译器的前缀。对于我们的交叉工具链来说,其前缀是i686-none-linux-gnu-。

在顶层的Makefile中,我们可以看到工具链中的编译器、链接器等均以$(CROSS_COMPILE)作为前缀:
linux-3.7.4/Makefile:
AS      = $(CROSS_COMPILE)as
LD      = $(CROSS_COMPILE)ld
CC      = $(CROSS_COMPILE)gcc
CPP     = $(CC) -E
AR      = $(CROSS_COMPILE)ar
NM      = $(CROSS_COMPILE)nm
STRIP       = $(CROSS_COMPILE)strip
OBJCOPY     = $(CROSS_COMPILE)objcopy
OBJDUMP     = $(CROSS_COMPILE)objdump

可以使用多种方式定义这两个变量,比如通过在环境变量中定义ARCH、CROSS_COMPILE;或者每次执行make时,通过命名行为这两个变量的赋值,如:
make ARCH=i386 CROSS_COMPILE=i686-none-linux-gnu-

也可以直接更改顶层Makefile。这种方法比较方便,但是要小心,以免破坏Makefile文件。本书中我们采用这种方式,将顶层Makefile中的如下脚本:
linux-3.7.4/Makefile:
ARCH        ?= $(SUBARCH)
CROSS_COMPILE   ?= $(CONFIG_CROSS_COMPILE:"%"=%)

更改为:
linux-3.7.4/Makefile:
ARCH        ?= i386
CROSS_COMPILE   ?= i686-none-linux-gnu-

点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:3.3 配置内核
下一篇:3.3.2 基本内核配置
相关文章
图文推荐
3.3.6 GNOME的软件管
3.3.5 GNOME的文件管
3.3.4 GNOME的窗口管
3.3.3 收藏夹和快捷
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站