Ubuntu 14.04 64位 嵌入式交叉编译环境arm-linux-gcc搭建 一次成功

时间:2021-07-27 14:55:56

最近在自己电脑上安装了ubuntu14.04 64位 的操作系统,想搭建嵌入式交叉编译环境arm-linux-gcc做嵌入式研究。在网上看了很多有关的帖子和博文,都不能一次成功,经过几次反复的折腾,总算搭建完成,现在讲过程介绍如下:

1.下载 arm-linux-gcc,我找了好久都没找到下载的官网,最后都是从帖子上下载的,都是ARM友善之家的版本,现在大多数是arm-linux-gcc-4.4.3.tar.gz版本,注意这是32位的,如果你的ubuntu是64位的,你要注意安装32位的库,后面我会详细介绍。

2.解压文件。大多数的帖子介绍的解压命令是sudo tar -xvzf arm-linux-gcc-4.4.3.tgz –C /,这里的-C / 是将文件解压到根目录下。但是执行这一命令后得不到想要的结果,因为我们下载的都是ARMfriend版本的,解压后的目录是/opt/Friendlyarm/toolschain/4.4.3,如果补助有这一点 后面的路径设置是有问题的。

3.建立目录。在/usr/local下建立目录arm,sudo mkdir /usr/local/arm

4.复制文件,讲刚刚解压的文件复制到刚刚建立的arm目录,sudo cp -r /opt/FriendlyARM/toolschain/4.4.3 /usr/local/arm

5.添加环境变量。很多博文和帖子都介绍了几种方法,可以选择使用,如果用了一种方法不成功,那就几种方法都用。也不怎么花时间。

方法一:修改/etc/bash.bashrc文件(此文件只对当前用户适用)
sudo gedit /etc/bash.bashrc
在最后加上 export PATH=$PATH:/usr/arm/4.4.3/bin  (路径)(注意等号那边不要有空格)这里好多博客都写的 export PATH=$PATH:/opt/FriendlyARM/toolschain/4.4.3/bin,其实没必要,因为第四部你已经吧文件复制过去了,可以直接写成/usr/arm/4.4.3/bin,根目录下的opt文件都可以删掉的。

方法二:修改/etc/profile文件(此文件属于系统级别的环境变量,设置在里面的东西对所有用户适用)
sudo gedit /etc/profile
增加路径设置,在末尾添加如下:
export PATH=$PATH:/usr/local/arm/4.4.3/bin

方法三:修改/etc/environment文件
sudo gedit /etc/environment
原文件应为
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games“
将其改为
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/arm/4.4.3/bin"
6.注册环境变量
立即使新的环境变量生效,不用重启电脑,对应步骤5也有3种方法
方法一:source /root/.bashrc
    或者
   ./etc/bash.bashrc
方法二:source /etc/profile
方法三:立即生效

7.检查是否将路径加入到PATH
echo $PATH
显示内容/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/arm/4.4.3/bin说明已经将交叉编译器的路径加入PATH。至此,交叉编译环境安装完成。

8.测试是否安装成功

在终端输入 arm-linux-gcc -v,可以查看arm-linux-gcc 的版本。到这里请注意,如果你的系统是32位的,就已经成功,会显示arm-linux-gcc 的版本信息,但是如果你的系统是64位的那就会报错 15: exec: /usr/local/arm/4.4.3/bin/.arm-none-linux-gnueabi-gcc: not found。这是因为64位的系统缺少32位的库,需要在安装。但是ubuntu12.04以后的版本就没有32位的库,所以执行sudo apt-get install libc6:i386,然后执行apt-get install ia32-libs,这是他会提示不可用,但是会给出几个替代的,你选一个安装就可以。安装完再执行arm-linux-gcc -v,就可以看到版本信息,至此,环境搭建完毕。