设为首页收藏本站
查看: 34431|回复: 0

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

[复制链接]

231

主题

64

回帖

2145

积分

管理员

积分
2145
玉米糊 发表于 2014-5-28 09:04:18 | 显示全部楼层 |阅读模式
在编译开发板的项目,包括uboot、kernel、filesystem时,明明用export把CROSS_COMPILE指定到环境变量中,用 echo $CROSS_COMPILE也能输出正确的交叉编译工具路径,但是在编译的时候,还是出现错误:
Makefile:89: *** Environment variable "CROSS_COMPILE" must be defined!. Stop!

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

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

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




回复

使用道具 举报

您需要登录后才可以回帖 登录

本版积分规则

Archiver|手机版|小黑屋|米尔科技论坛   

GMT+8, 2024-11-22 22:08 , Processed in 0.047574 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表