EasyARM-iMX283A 安装交叉编译工具链

来源:互联网 发布:redis与数据库 编辑:程序博客网 时间:2024/06/13 11:10

EasyARM-iMX283A 安装交叉编译工具链

交叉编译器:

  • arm-none-eabi-gcc,表示目标处理器是ARM,不运行操作系统,仅运行前后台程序
  • arm-uclinux-eabi-gcc,表示目标处理器是ARM,运行uClinux操作系统
  • arm-none-linux-gnueabi-gcc,表示目标处理器是 ARM,运行 Linux 操作系统
  • mips-linux-gnu-gcc,表示目标处理器是 MIPS,运行 Linux 操作系统

ARM-Linux 交叉编译器可以自行从源代码编译,也可以从第三方获取,但最好直接从第三方获取。如果自己编译的话,一是编译过程繁琐,不能保证成功,二是就算编译成功,也不能保证交叉编译器的稳定性,编译器的不稳定性会对后续的开发带来无限隐患。而第三方提供的交叉编译器通常都经过比较完善的测试,确认是稳定可靠的。

直接用其提供的交叉编译工具链,我们只需解压安装就行了。我这里解压到“/opt/”目录
解压命令:tar xjvf gcc-4.4.4-glibc-2.11.1-multilib-1.0.tar.bz2 -C /opt/

设置环境变量:

1. 全路径引用

如果不添加交叉编译器的路径到系统环境变量中,则必须在每次使用交叉编译器
的地方写明交叉编译器的全路径,例如:

export CC=/opt/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin/arm-fsl-linux-gnueabimake CROSS_COMPILE=$CC ARCH=arm uImage

你这样会累shi的,不推荐这种方法。

2. 临时设置

临时设置系统环境变量,是通过export命令,将交叉编译器的路径添加到系统 PATH 环境变量中。用法(多个值之间用冒号隔开),例如:

export PATH=$PATH:/交叉编译器路径

那我们的就是:

export PATH=$PATH:/opt/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin

然后执行echo命令,查看系统 PATH 的值:

echo $PATH

输出:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin

3. 全局设置

/etc/profile 是系统全局的配置文件,在该文件中设置交叉编译器的路径,能够让登录本机的全部用户都可以使用这个编译器。
打开终端,输入“sudo vi /etc/profile”命令,打开/etc/profile 文件,在文件末尾添加:

export PATH=$PATH:/opt/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin

保存文件并退出。
然后在终端输入“. /etc/profile”(点+空格+文件名),执行 profile 文
件,使刚才的改动生效。

4. 修改用户配置文件

“/etc/profile”是全局配置文件,会影响登录本机的全部用户。如果不希望影响其他用户,也可以只修改当前用户的配置文件,通常是“~/.bashrc”或者“~/.bash_profile”。修改方法与修改“/etc/profile”类似,这时无需 sudo,直接 vi 打开即可,在文件末尾增
加:

export PATH=$PATH:/opt/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin

与执行“/etc/profile”的方式一样,输入“. .bashrc”或者“. .bash_profile”,执行修改过的文件,使修改生效。

我个人使用的是第三种,反正就我一人使用。

测试工具链

打开终端,输入 arm-fsl-linux-gnueabi-,然后按键盘 TAB键,同样可以看到很多 arm-fsl-linux-gnueabi-开头的命令。
我们输入arm-fsl-linux-gnueabi-gcc -v,可以看以下版本信息。

进一步测试,可以编写一个简单的 c 文件,用交叉编译器交叉编译,并查看编译结果。
在“~”目录下创建 hello.c 文件。经典的hello world。

#include <stdio.h>int main(void){    printf("Hello %d!\n");    return 0;}

执行命令:arm-fsl-linux-gnueabi-gcc hello.c -o hello
再执行命令:file hello
输出:

hello:ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.26, not stripped

可以看到 hello 程序是 32 位 ARM 指令架构的程序。

0 0