arm-linux-gcc armlinuxgcc环境配置
大家好,如果您还对arm-linux-gcc不太了解,没有关系,今天就由本站为大家分享arm-linux-gcc的知识,包括armlinuxgcc环境配置的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!
GCC能否运行于ARM-Linux环境下即GCC能否在ARM平台上运行
简答:
gcc可以运行在arm-linux下。
gcc,可以在arm平台上运行。
详解:
gcc,一般指的是,pc版,x86的平台,
用于嵌入式系统,比如arm的cpu,linux的系统下,是:
本来,一直就可以的,
而且有专门的属于:
交叉编译
简答说就是:
在你的pc端,x86的cpu上,制作出一个交叉编译器
一般叫做arm-linux-gcc
用此arm-linux-gcc去编译你的程序
编译出来的程序,可以运行在嵌入式开发板,比如arm的linux下
极其详尽的解释:
我刚写个教程,你去看就知道了:
交叉编译详解
交叉编译详解
此教程的主要内容包括:
了什么是交叉编译
为何要有交叉编译
什么是工具链
什么是交叉工具链
交叉编译器的名字的命名规则:包括你这里所说的arm-linux-gcc的含义
如何获得交叉编译器
制作交叉编译器的各种工具:简介了常见的crosstool-ng,buildroot,crosstool等等工具
使用已有的交叉编译器和自己手动编译交叉编译器之间的对比
交叉编译方面的心得和注意事项
等你看完了后,建议用crosstool-ng,或者是buildroot去自己编译一个arm-linux的gcc。
如何安装arm-linux-gcc
1,下载并安装arm-linux-gcc
arm-linux-gcc-4.2.1的版本在这里可以下载,最新版arm-linux-tools-20080623.tar.gz这个可能是4.2.4的版本,因为下面有编译4.2.4的方法还有相应的代码包,build-arm-linux-4.2.14,此版本由于过大,我没有下载。
下面的这个是ARM官方给的下载链接,然后将HOST选择为IA32 GNU/Linux,点击下载就可以了。不过前缀为arm-2010.09-51-arm-none-eabi-i686-pc-linux-gnu而不是arm-linux-。。。
在友善之臂官方网站下载arm-linux-gcc4.4.3。
2,删除之前安装有旧版本,执行
[root@localhost~]# rm-rf/opt/arm
3,对新版本arm-linux-gcc-4.4.3进行解压(注意,如果我们加上了-C,那么就会自动解压到/usr/local/arm/这个目录下),但是友善之臂按照下列方式解压,不会解压到/usr/local/arm/目录下的,这是因为友善之臂把/usr/local/arm/目录修改成了/opt/FriendlyARM/toolschain/,除非自己在把它修改过来
[root@localhost~]# tar-ivxzf/smbroot/arm-linux-gcc-4.4.3.tar.gz-C/
4,修改配置文件,将arm-linux-gcc添加到环境变量中,因为arm-linux-gcc的命令是在/usr/local/arm/4.4.3/bin下,其目的通过对全局变量绑定使之能够在任意一个目录下能够执行该命令。
打开设置文件
[root@localhost opt]# vi/etc/profile
在打开的文件的
# Path manipulation
if ["$EUID"="0" ]; then
pathmunge/sbin
pathmunge/usr/sbin
pathmunge/usr/local/sbin
pathmunge/usr/local/arm/4.4.3/bin
fi
或者在文件末尾添加
export PATH=$PATH:/usr/local/arm/4.4.3/bin
保存退出
5,立即使新的环境变量生效,不用重启电脑
[root@localhost opt]# source/etc/profile
[root@localhost opt]#
6,检查是否将路径加入到PATH:
[root@localhost opt]# echo$PATH
显示的内容中有/usr/local/arm/4.4.3/bin,说明已经将交叉编译器的路径加入PATH。至此,交叉编译环境安装完成。
7,测试是否安装成功
首先,执行find命令查询一下arm-linux-gcc的位置
[root@localhost~]# find/-name arm-linux-gcc
/opt/arm/toolschain/4.4.3/bin/arm-linux-gcc
[root@localhost~]#
可以看到arm-linux-gcc的位置与环境变量中设定的路径一致
接下来查询arm-linux-gcc的版本
[root@localhost bin]# arm-linux-gcc-v
Using built-in specs.
Target: arm-none-linux-gnueabi
Configured with:/opt/FriendlyARM/mini2440/build-toolschain/working/src/gcc-4.4.3/configure--build=i386-build_redhat-linux-gnu--host=i386-build_redhat-linux-gnu--target=arm-none-linux-gnueabi--prefix=/opt/FriendlyARM/toolschain/4.4.3--with-sysroot=/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi//sys-root--enable-languages=c,c++--disable-multilib--with-arch=armv4t--with-cpu=arm920t--with-tune=arm920t--with-float=soft--with-pkgversion=ctng-1.6.1--disable-sjlj-exceptions--enable-__cxa_atexit--with-gmp=/opt/FriendlyARM/toolschain/4.4.3--with-mpfr=/opt/FriendlyARM/toolschain/4.4.3--with-ppl=/opt/FriendlyARM/toolschain/4.4.3--with-cloog=/opt/FriendlyARM/toolschain/4.4.3--with-mpc=/opt/FriendlyARM/toolschain/4.4.3--with-local-prefix=/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi//sys-root--disable-nls--enable-threads=posix--enable-symvers=gnu--enable-c99--enable-long-long--enable-target-optspace
Thread model: posix
gcc version 4.4.3(ctng-1.6.1)
[root@localhost bin]#
可以看到arm-linux-gcc的版本号,至此,arm-linu-gcc已成功安装。
gcc和arm-linux-gcc是什么关系区别是什么
gcc是linux系统下面用来将代码编译成一个可执行程序的手段。编译出来的是适用于linux系统的可执行二进制文件。可执行程序其实就是一堆的0101二进制机器码。这些机器码代表什么含义只有机器本身能理解。所以你用gcc编译出来的可执行程序只有在linux系统下面可以运行。举个例子你的可执行程序里面有一句01011.这句在linux下面可能是吃饭的意思,但是在windows下面可能01011是撒尿的意思。那你说linux的可执行程序放在window下面能正常运行吗?肯定不能嘛。你要的目的是吃饭,它帮你执行撒尿很显然就不对了。同样的可能01011在ARM下面的意思是睡觉。不同系统的机器码含义是不一样的。所以你在linux系统下面写的代码要怎样才能在ARM系统上面跑呢。这就需要用到交叉编译。arm-linux-gcc是什么意思?就是告诉你的编译器,我编写的环境是linux,但是我希望生成的可执行程序是在arm上面跑的。这就是交叉编译。编写环境和执行环境分离的一种手段。