__linux_arm_arch__ is not 编译驱动,提示错误:arm-linux-gcc:Command not found

老是提示arm-linux-gcc找不到,但是确实是装好了,其实是权限的问题,Ubuntu没有root权限,刚开始用碰到很多麻烦,查了好多资料,终于把arm-linux-gcc: Command not found 的问题解决了。

问题:

sudo tar jxvf cross-2.95.3.tar.bz2

export PATH=$PATH:/usr/local/arm/2.95.3/bin

使用arm-linux-gcc –v 检查交叉编译器安装成功

tar jxvf kernel.tar.bz2

解压之后生成kernel目录

sudo make clean

sudo make menuconfig

sudo make zImage

提示错误:

arm-linux-gcc: Command not found

PATH里有/usr/local/arm/2.95.3/bin, /usr/local/arm/2.95.3/bin/下有arm-linux-gcc文件,但是make的时候,就是找不到arm-linux-gcc

原因:

export PATH=$PATH:/usr/local/arm/2.95.3/bin

是设置当前用户的PATH,而sudo执行make的时候,使用的是超级用户权限,那也就使用了超级用户的PATH(但是这个PATH里,并没有/usr/local/arm/3.4.1/bin)

解决方法:

先打开一个超级用户权限的shell:

sudo –s

在当前shell下,设置环境变量:

export PATH=$PATH:/usr/local/arm/2.95.3/bin

再进入到kernel目录,make zImage,就可以找到arm-linux-gcc了。

再一例:

1:下载arm-linux-gcc-3.3.2.tar.bz2 到任意的目录下

我把它下载到了我的工具文件夹里 /home/zt/tools

2:解压

进入工具目录(视具体情况而定)

debian:/home/zt/tools# cd /home/zt/tools

解压

debian:/home/zt/tools# tar xvf arm-linux-gcc-3.3.2.tar.bz2

解压过程需要一段时间,解压后的文件形成了 usr/local/ 文件夹

进入该文件夹

debian:/home/zt/tools# cd usr/local/

将arm文件夹考到/usr/local/下

debian:/home/zt/tools/usr/local# cp -rv arm /usr/local/

现在交叉编译程序集都位于/usr/local/arm/3.3.2/bin下面了

3:修改环境变量

export PATH=/usr/local/arm/3.3.2/bin:$PATH

用此方法添加的环境变量会在掉电后丢失,因此,可以在启动脚本里做手脚,方法如下:

debian:/home/zt/tools/usr/local# vim /etc/bash.bashrc

在文件的最后一行添加以上命令

export PATH=/usr/local/arm/3.3.2/bin:$PATH

保存退出,当重新登录root时 新的环境变量就会加载了,呵呵

检测一下

debian:/home/zt/tools/usr/local# echo $PATH

/usr/local/arm/3.3.2/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

这一步按上面的步骤做的时候,我出现了问题:重启后,执行echo $PATH,但是列表中还是没有/usr/local/arm/3.3.2/bin !于是我尝试着将”export PATH=/usr/local/arm/3.3.2/bin:$PATH“这句话添加到/home/jx/.bash_profile文件中,重启,再次执行echo $PATH,列表中终于出现了/usr/local/arm/3.3.2/bin。然后我进入root中再执行echo $PATH,列表中也出现了/usr/local/arm/3.3.2/bin。而当我添加一个用户jinxin,然后执行"su -l jinxin"(参数-l表示登录并改变到所切换的用户环境),输入用户jinxin的登录密码,然后执行echo $PATH,列表中没有出现/usr/local/arm/3.3.2/bin。查资料知:用户环境变量均放在/.bash_profile(如果用的是bash的话)中,每个用户目录对其他用户不可见。上面也验证了这个说法。

注:刚刚在网上发现了一个命令: source .bash_profile 在修改好 .bash_profile 文件后,直接运行这个命令,就可以直接让环境变量的修改生效了。 但是使用这个命令有一定的危险性。因为我随便在./bash_profile里边加了一句话"export PATH=/home/jx",然后执行source .bash_profile后,我的bash shell下的基本命令如:su、ls、cd、vi等就不能使用了,显示:“-bash: ls: command not found”!

解决办法:我觉得我用了一个比较笨的办法,就是重新登录,但用另一个用户名登录,然后在shell中输入:"su"进入root, 在root下修改前面所说的.bash_profile文件。欢迎大家提供更好的解决办法。

4:测试

安装成功,否则 会提示

bash: arm-linux-gcc: command not found

5:收尾工作

把用过的文件删除

debian:/home/zt/tools/usr/local# cd ../..

debian:/home/zt/tools# rm -rv usr

第3例收集:

问题:路径设置明明没有问题,arm-linux-gcc -v ,也可以正确显示版本信息(我用的是4.3.3的EABI编译器),但make zImage时总是提示找不到arm-linux-gcc

可能性分析:

网上资料:

1.应该是在makefile 中指出你的   gcc     的源路径

估计是这样

CC=/usr/local/arm/3.3.2/bin/arm-linux-gcc

#CC= gcc

2.你的arm-linux-gcc不在默认路径内。按上面说的加路径

3.安装好arm-linux-gcc,然后CC=/usr/local/arm/3.3.2/bin/arm-linux-gcc,修改 Makefile,或者在PATH环境变量加/usr/local/arm/3.3.2/bin路径,这样更好点,用export命令。

5.由于Makefile可能是你./configure的时候生成的,所以要在./configure之后改,或者在./configure的时候用CC=/usr/local/arm/3.3.2/bin/arm-linux-gcc

我的解决方案:

将Makefile中的CROSS_COMPILE    = arm-linux-,改为CROSS_COMPILE    = /opt/EmbedSky/4.3.3/bin/arm-linux-,此时又提示找不到arm-none-linux-gnueabi-gcc,无奈又改为CROSS_COMPILE    = /opt/EmbedSky/4.3.3/bin/arm-none-linux-gnueabi-

这样可以顺利编译了!

在编译Qtape时,出现如下问题:

-lcrypt -luuid -lm -ldl -ldl -L/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qtopia/lib -L/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qt2/lib -lqte

/usr/bin/ld: cannot find -luuid

分析:找不到luuid,他是说找不到libuuid这个库!!

但是我已经安装了,为什么还是找不到呢?

-L 是指定库文件搜索路径

-I 指定头文件的查找目录

-l 指定连接库

无奈,只好将libuuid库从 /lib目录下移到/opt/EmbedSky/Qte/x86-qtopia-2.2.0/qtopia/lib/目录下,

问题解决!

感悟:似乎默认路径经常会出问题!

错误:make : arm-linux-gcc not found

可能原因:

1.应该是在     makefile   中指出你的   gcc     的源路径

估计是这样

CC=/usr/local/arm/3.3.2/bin/arm-linux-gcc

#CC= gcc

2.你的arm-linux-gcc不在默认路径内。按上面说的加路径

3.安装好arm-linux-gcc,然后CC=/usr/local/arm/3.3.2/bin/arm-linux-gcc,修改Makefile,或者在PATH环境变量加/usr/local/arm/3.3.2/bin路径,这样更好点,用export命令。

5.由于Makefile可能是你./configure的时候生成的,所以要在./configure之后改,或者在./configure的时候用CC=/usr/local/arm/3.3.2/bin/arm-linux-gcc

6. 出现了如下问题:

(1)arm-linux-gcc: command can not found. 解决方法:修改Makefile时,CROSS_COMPILE的更改采用绝对路径。

(2)提示linux/mtd/partitions.h中的61行:field 'list' is an incomplete type.解决方法:由于list_head定义于list.h,在partitions.h中包含之,问题解决。

(3)superlpplatform undeclared here(not in a function).   解决办法:在devs.h中声明之。

(4)安装模块时,Warning: you may need to install module-init-tools。 解决方法:

下载module-init-tools-3.0.tar.gz源码包的地方是:http://www.kernel.org/pub/linux/kernel/people/rusty/modules/module-init-tools-3.0.tar.gz

接下来, 按照下列步骤安装module-init-tools工具包:

tar -zxvf module-init-tools-3.0.tar.gz

在module-init-tools-3.0目录下,

# ./configure --prefix=/

# make moveold

# make all install

# ./generate-modprobe.conf /etc/modprobe.conf

然后make module_install

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值