【转】3.3.1 交叉编译内核设置

原文网址:http://book.51cto.com/art/201309/412064.htm

《深度探索Linux操作系统:系统构建和原理解析》第3章构建内核,本章首先讨论了内核的构建过程。本节为大家介绍交叉编译内核设置。

AD:干货来了,不要等!WOT2015 北京站演讲PPT开放下载!

 

3.3.1 交叉编译内核设置

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

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

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

在顶层的Makefile中,我们可以看到工具链中的编译器、链接器等均以$(CROSS_COMPILE)作为前缀:

 

  1. linux-3.7.4/Makefile:  
  2.  
  3. AS      = $(CROSS_COMPILE)as  
  4. LD      = $(CROSS_COMPILE)ld  
  5. CC      = $(CROSS_COMPILE)gcc  
  6. CPP     = $(CC) -E  
  7. AR      = $(CROSS_COMPILE)ar  
  8. NM      = $(CROSS_COMPILE)nm  
  9. STRIP       = $(CROSS_COMPILE)strip  
  10. OBJCOPY     = $(CROSS_COMPILE)objcopy  
  11. OBJDUMP     = $(CROSS_COMPILE)objdump 

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

  1. make ARCH=i386 CROSS_COMPILE=i686-none-linux-gnu- 

也可以直接更改顶层Makefile。这种方法比较方便,但是要小心,以免破坏Makefile文件。本书中我们采用这种方式,将顶层Makefile中的如下脚本:
 

  1. linux-3.7.4/Makefile:  
  2.  
  3. ARCH        ?= $(SUBARCH)  
  4. CROSS_COMPILE   ?= $(CONFIG_CROSS_COMPILE:"%"=%) 

更改为:

 

  1. linux-3.7.4/Makefile:  
  2.  
  3. ARCH        ?= i386  
  4. CROSS_COMPILE   ?= i686-none-linux-gnu- 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值