玉米糊 发表于 2014-5-28 09:04:18

交叉编译Environment variable "CROSS_COMPILE" must be defined!. 错误

在编译开发板的项目,包括uboot、kernel、filesystem时,明明用export把CROSS_COMPILE指定到环境变量中,用 echo $CROSS_COMPILE也能输出正确的交叉编译工具路径,但是在编译的时候,还是出现错误:
Makefile:89: *** Environment variable "CROSS_COMPILE" must be defined!. Stop!

包括ARCH=arm变量输出不成功导致提示x86类错误。其实这个的主要原因是,我们使用了普通用户登录linux系统,但是不是在当前用户的目录下,所以编译的时候虽然使用
export CROSS_COMPILE=xxx
来指定交叉工具路径,但是在执行make的时候,又必须使用sudo命令切换到root超级权限用户。因为每个用户都有自己的环境变量,所以在root用户中,无法找到CROSS_COMPILE。
解决的办法有很多种:
1、更换工作路径(建议)
比如说,我当前登录系统的用户名是:kimball,原本uboot、kernel、filesystem等源放在/opt/linux/这个目录下的,那么现在要做的,就是吧这些源码拷贝到我个人用户的目录下,路径是 /home/kimball,参考命令:
$ sudo cp /opt/linux/ /home/kimball/
这样以后我们都在 /home/kimball/linux/目录下工作就可以了,这样可以省略sudo命令(除非要安装或者拷贝资料到用户目录以外的目录)。

2、快速解决办法
可以在原来目录下,在 make 命令后直接指定这些好这些变量,参考命令:
$ sudo make ARCH=arm CROSS_COMPILE=/usr/local/arm-2010q1/bin/arm-none-linux-gnueabi-

3、在export变量时用sudo
在export变量时用sudo,参考命令:
$ sudo export ARCH=arm
$ sudo export ARCH=arm CROSS_COMPILE=/usr/local/arm-2010q1/bin/arm-none-linux-gnueabi-
然后再编译:
$ sudo make




页: [1]
查看完整版本: 交叉编译Environment variable "CROSS_COMPILE" must be defined!. 错误