在Ubuntu14.04下搭建arm-linux-gcc交叉编译环境

记录一下在安装arm-linux-gcc交叉编译环境时所遇到的一些问题

最近突然想学习下嵌入式linux,之前学长毕业的时候留了几套嵌入式Linux的开发板,手头刚好有友善之臂(FriendlyARM)的mini2440和TQ2440两套开发板。然后就开始了在B站上的学习之旅——跟着韦东山的入门视频慢慢遛。
视频一开始,韦老师叮咛新手就不要自己搭建开发环境,因为需要配置各种环境,所以他们准备了保姆式的服务,将已经搭建好的Ubuntu系统的虚拟机文件直接压缩好供我们使用。我虽然不是嵌入式新手,之前本科一直在搞电源软硬件,代码都是在Windows下编译的,从没接触过Linux环境,所以还是乖乖的听韦老师的话,用他们的压缩文件直接在虚拟机上运行Ubuntu16.04。同时开始熟悉Linux的环境,各种指令。但我属于那种闲不住的,总是想从头开始搞,同时不喜欢用虚拟机,占我电脑资源。刚好手头还有个工控机,CPU是Inter E3825 @1.33Gx2,凑活着能用,就给装了Ubuntu14,04(先安装的16.04,奈何硬件太low,有点卡,所以改用14.04版了,速度就好很多了)。系统装完后,安装SSH服务,然后连上WiFi,查看IP,最后就把它扔到了一个小角落里(不占我有限的桌面空间,吐槽一下学校的工位有点小),建立SSH连接,一台远程(5米远【滑稽】)服务器就搞好了

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

首先需要下载到arm-linux-gcc交叉编译器,由于用到了友善之臂的mini2440,所以就跑去友善的官网查资料,从下载处可以找到arm-linux-gcc 4.4.3,下载地址如下:
http://112.124.9.243/arm9net/mini2440/linux/arm-linux-gcc-4.4.3-20100728.tar.gz

然后,在已经启动Ubuntu服务器的情况下,启动MobaXterm,与其建立SSH连接(Ubuntu已经安装SSH服务并开启),登录后便可以在左边功能框中选择STFP选项直接远程查看操作服务器文件(可以操作家目录下的文件,其他目录下的文件可以查看,操作的话会提示 Permission denied,即没有权限),在家目录下新建文件夹tools,可以直接在左边功能区选择新建文件夹,也可以用直接用命令行

mkdir tools

建好目录后,把在windows上下载好的编译器压缩包拖到tools文件夹中(用什么方法都行,比如FileZillaClient等,总之把文件搞过去)如下图:
在Ubuntu14.04下搭建arm-linux-gcc交叉编译环境_第1张图片
在Ubuntu14.04下搭建arm-linux-gcc交叉编译环境_第2张图片
接着就可以安装了

1.解压文件

输入

cd tools
sudo tar -zxvf arm-linux-gcc-4.4.3.tar.gz

然后会有提示输入密码,输入后等待解压完成
查看当前目录

ls

会发现已经多了一个opt文件夹
在这里插入图片描述

2.将解压好的文件拷贝到用户级程序目录中

输入命令

cd /usr/local  
sudo mkdir arm
sudo cp -r ~/tools/opt/FriendlyARM/toolschain/4.4.3 /usr/local/arm/

3.添加环境变量,将编译器文件添加到PATH中去

修改/etc/bash.bashrc文件
输入命令

sudo gedit /etc/bash.bashrc

若要输入密码就输入,然后可能会显示以下信息:
在这里插入图片描述
不慌,等待跳出对话框
在Ubuntu14.04下搭建arm-linux-gcc交叉编译环境_第3张图片
在末尾加上
export PATH=$PATH:/usr/local/arm/4.4.3/bin
保存,关闭。
(上述操作也可以用vi编辑器编辑,就不会显示各种警告和错误信息了)
最后刷新环境变量,输入指令:

sudo -s
source /root/.bashrc
echo $PATH

看信息如果包含刚添加的路径:/usr/local/arm/4.4.3/bin 则修改成功

4.查看编译器是否安装成功

输入指令:

arm-linux-gcc -v

显示以下信息则安装成功
在Ubuntu14.04下搭建arm-linux-gcc交叉编译环境_第4张图片

5.编译,查看是否缺少库文件

我扔了个LED灯的例程进去编译,结果编译不通过,提示:
error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No s make
告诉我无法加载共享库libstdc++.so.6 这个库文件,
少了就下载更新,输入指令

sudo apt-get install lib32stdc++6

安装完成后再次编译,结果照样不通过,提示
error while loading shared libraries: libz.so.1: cannot directorymake:
告诉无法进行目录制作,少一个包 libz.so.1 这个包包含在 lib32z1 这个库文件中,所以再安装库文件
输入指令:

sudo apt-get install lib32z1

安装完成后,再次编译了一下,编译成功:
编译文件
成功输出 led.bin 文件
最后下载到板子上运行,板子上的led成功流水。

你可能感兴趣的:(在Ubuntu14.04下搭建arm-linux-gcc交叉编译环境)