arm-linux-gcc已安装,可是编译是总是出现arm-none-linux-gnueabi-gcc:命令未找到

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了arm-linux-gcc已安装,可是编译是总是出现arm-none-linux-gnueabi-gcc:命令未找到相关的知识,希望对你有一定的参考价值。

我已把3.4.1安装完成,环境变量也定了:
set PATH='/usr/local/arm/3.4.1/bin':$PATH
export PATH

本来在/usr/local/arm/3.4.1/bin下面只有arm-linux-gcc
我在Makefile里也只是写了:
CROSS_COMPILE=/usr/local/arm/3.4.1/bin/arm-linux-
CC = $(CROSS_COMPILE)gcc
可是一make,就出现
make -C /armsys2410/linux-2.6.15/ M=/armsys2410/hello modules
make[1]: arm-none-linux-gnueabi-gcc:命令未找到
make[1]: Entering directory `/armsys2410/linux-2.6.15'

WARNING: Symbol version dump /armsys2410/linux-2.6.15/Module.symvers
is missing; modules will have no dependencies and modversions.

CC [M] /armsys2410/hello/hello.o
cc1: error: invalid option `abi=apcs-gnu'
make[2]: *** [/armsys2410/hello/hello.o] 错误 1
make[1]: *** [_module_/armsys2410/hello] 错误 2
make[1]: Leaving directory `/armsys2410/linux-2.6.15'
make: *** [modules] 错误 2

这是为什么??
也就是说,我明明是安装的交叉编译器3.4.1,为什么总是提示我arm-none-linux-gnueabi-gcc:命令未找到,这个命令是3.4.3里的

cc1: error: invalid option `abi=apcs-gnu'

你的交叉编译器有问题吧……

看看这个解决办法:
http://blog.sina.com.cn/s/blog_538376bd01000a2c.html

不过要我说,弄嵌入式首先要会自己做交叉编译工具,直接拿别人的,出问题只能在那里傻坐着。
其实自己编译个最新版本的交叉编译工具,我的 core 2 dou T5450 其实也就需要三个小时搞定。当然我这是全自动的,你手动半天也够了吧?
自己编译一个 gcc 4.4.2 + binutils 2.20.1 + glibc 2.11 + kernel-header 2.6.33 也不需要多麻烦吧?
至少自己编译起程序来不会出现各种 XXOO 的问题。
参考技术A 你用的是什么系统,那种linux系统?出现这种问题就是环境变量没有设好,如果是用root用户登录的,就在对应的配置文件里添加环境变量;其它用户也是这样,还有你使用sudo这个你最好把你要编译的文件放到本账户的文件夹下! 参考技术B gcc --version查看下gcc是否安装,如果未安装 rpm -ivh gcc--nodeps查看哪种依赖包未安装,网络连通的情况下yum install gcc来安装 参考技术C 在最前面加上
source /root/.bash_profile

Ubuntu 12.04嵌入式交叉编译环境arm-linux-gcc搭建过程图解

本文转载自:Ubuntu 12.04嵌入式交叉编译环境arm-linux-gcc搭建过程图解

安装前的絮叨

首先简单介绍一下,所谓的搭建交叉编译环境,即安装、配置交叉编译工具链。在该环境下编译出嵌入式Linux系统所需的操作系统、应用程序等,然后再上传到目标机上。

交叉编译工具链是为了编译、链接、处理和调试跨平台体系结构的程序代码。对于交叉开发的工具链来说,在文件名称上加了一个前缀,用来区别本地的工具链。例如,arm-linux-表示是对arm的交叉编译工具链;arm-linux-gcc表示是使用gcc的编译器。除了体系结构相关的编译选项以外,其使用方法与Linux主机上的gcc相同,所以Linux编程技术对于嵌入式同样适用。不过,并不是任何一个版本拿来都能用,各种软件包往往存在版本匹配问题。例如,编译内核时需要使用arm-linux-gcc-4.3.3版本的交叉编译工具链,而使用arm-linux-gcc-3.4.1的交叉编译工具链,则会导致编译失败。

那么gcc和arm-linux-gcc的区别是什么呢?区别就是gcc是linux下的C语言编译器,编译出来的程序在本地执行,而arm-linux-gcc用来在linux下跨平台的C语言编译器,编译出来的程序在目标机(如ARM平台)上执行,嵌入式开发应使用嵌入式交叉编译工具链。

安装步骤

1、将压缩包arm-linux-gcc-4.4.3.tar.gz存放在一个目录下,这个目录就是你等会解压缩的目录,以后这个目录就不能随便删掉了,我的存放路径是 /home/song/software,如下图,记住这个路径,等会还会用到。

技术分享

2、使用tar命令:tar zxvf arm-gcc-4.4.3.tar.gz将software文件夹下的arm-linux-gcc-4.4.3.tar.gz解压缩安装到当前目录下如下图

技术分享

通过下图可以看到解压成功了,并且解压后的文件存放在了/home/song/software/opt/FriendlyARM/toolschain/4.4.3文件夹下,如下图所示,这个存放路径可得记住,如下图

技术分享

3、接下来配置系统环境变量,把交叉编译工具链的路径添加到环境变量PATH中去,这样就可以在任何目录下使用这些工具。记下上一步中的安装路径,使用命令:vim /etc/profile 编辑profile文件,添加环境变量。

技术分享

在profile中最后一行添加: export PATH=$PATH:/home/song/software/opt/FriendlyARM/toolschain/4.4.3/bin 这个路径就是那个bin目录所在的路径,可能你的不一样,按照你实际的目录填就可以了,如下图32行

技术分享

编写完保存就好了

4、使用命令:source /etc/profile 使环境变量生效

5、在终端上输入命令 arm-linux 再按Tab键,可以看到下图,说明环境变量设置成功了

技术分享

6、使用命令:arm-linux-gcc -v 会出现下面的错误提示:/home/song/software/opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-gcc: 15: exec: /home/song/software/opt/FriendlyARM/toolschain/4.4.3/bin/.arm-none-linux-gnueabi-gcc: not found

技术分享

说是出现这种问题的原因是由于Ubuntu12.04用的是64位的,解决方法就是使用命令:sudo apt-get install ia32-libs 装一些32位的库

技术分享

7、待安装完32位的库之后,再使用命令:arm-linux-gcc -v,这一次就成功了,如下图

技术分享

8、验证,编译一个hello.c文件

技术分享

使用命令:arm-linux-gcc hello.c -o hello 看是否编译成功

技术分享

可见成功生成了二进制文件。

以上是关于arm-linux-gcc已安装,可是编译是总是出现arm-none-linux-gnueabi-gcc:命令未找到的主要内容,如果未能解决你的问题,请参考以下文章

S3C2440-裸机篇-02 | 安装和使用arm-linux-gcc交叉编译工具链

Ubuntu 12.04嵌入式交叉编译环境arm-linux-gcc搭建过程图解

安装交叉编译器

关于小米手机安装APP总是提示“与已安装应用签名不同”的问题

关于小米手机安装APP总是提示“与已安装应用签名不同”的问题

安装arm-linux-gcc交叉编译器