make ARCH与CROSS_COMPILE之间的关系

8 篇文章 1 订阅

make +参数 ARCH与CROSS_COMPILE之间的关系


在编译内核的时候,常常会使用一些编译命令,
本人编译的linux-socfpga的内核 版本是4.5
例如:

export CROSS_COMPILE=/home/z/WORK/inside_core/gcc-linaro-arm-linux-gnueabihf-4.8-2014.04_linux/bin/arm-linux-gnueabihf-

make ARCH=arm socfpga_defconfig
make ARCH=arm menuconfig 

ARCH

即architecture,就是选择编译哪一种cpu architecture,也就是编译arch/目录下的哪一个子目录。如指定make ARCH=arm就是编译arch/arm下的代码。如果不指定,make将使用本机(用什么机器编译就是什么)的cpu作为缺省ARCH.注意:arch/arm下不但有arm体系架构特有的代码,还有arm特有的kconfig,也就是配置选项,所以在make menuconfig,make xxxx_defconfig的时候也必须指定ARCH=arm

CROSS_COMPILE

即交叉编译器的前缀(prefix),也就是选择将代码编译成目标cpu的指令的工具,如指定export CROSS_COMPILE=/home/z/WORK/inside_core/gcc-linaro-arm-linux-gnueabihf-4.8-2014.04_linux/bin/arm-linux-gnueabihf-就是临时指定交叉编译工具链的路径,使用的交叉编译工具链是/gcc-linaro-arm-linux-gnueabihf-4.8-2014.04_linux/bin/arm-linux-gnueabihf-

如果不指定CROSS_COMPILE参数,make时将认为prefix为空,即使用gcc来编译。这里cross_compile的设置,是假定所用的交叉工具链的gcc程序名称为arm-linux-gcc。如果实际使用的gcc名称是some-thing-else-gcc,则这里照葫芦画瓢填some-thing-else-即可。总之,要省去名称中最后的gcc那3个字母。

使用

在配置或编译内核之前,首先要确定目标CPU架构,以及编译时采用什么工具链。这是最最基础的信息,首先要确定的。

如果当前使用的PC机编译内核,则无须设置。

否则的话,就要明确设置。

这里以arm为例,来说明。
1)修改Makefile

打开内核源码根目录下的Makefile,修改如下两个Makefile变量并保存。

ARCH := arm
CROSS_COMPILE := arm-linux-

注意,这里cross_compile的设置,是假定所用的交叉工具链的gcc程序名称为arm-linux-gcc。如果实际使用的gcc名称是some-thing-else-gcc,则这里照葫芦画瓢填some-thing-else-即可。总之,要省去名称中最后的gcc那3个字母。

2)使用make+参数形式(也就是通过make工具的命令行参数指定变量的值)

例如:

编译内核时,使用:

make  ARCH=arm  CROSS_COMPILE=arm-linux- 

或者
make ARCH=arm LOCALVERSION= zlmage

配置内核时时,使用

make ARCH=arm menuconfig

参考博文:
https://blog.csdn.net/zydlyq/article/details/50997582

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值