什么是交叉编译?
简单来说就是在A类机器上编译源代码,得到可执行程序,需要运行到B类机器上。需要交叉编译才能使A机器上编译得到的可执行程序运行到B机器上,交叉编译则需要用到交叉编译工具。
动手安装交叉编译工具链
1.选择安装的位置:打开虚拟机,切换到root用户。
输入命令cd /usr/local 进入local目录
输入命令mkdir arm-toolchain 创建 arm-toolchain文件夹,工具链安装在此文件夹下面
2.准备好交叉编译工具,可以自己网上下载,这里提供了一个。
交叉编译工具链接
将交叉编译工具拷贝到共享文件夹下,创建共享文件夹的方式如下:
右击虚拟机下的Ubuntu,选择设置->虚拟机设置里的选项->共享文件夹->启用共享文件夹->添加一个共享文件夹(E:\share),此时电脑下E盘的share文件夹就是我的共享夹,将交叉编译工具拷贝到此目录。
3.将共享文件夹下的交叉编译工具拷贝到虚拟机下刚刚创建的arm-toolchain文件夹下:
输入命令cp /mnt/hgfs/share/arm-2009q3.tar.bz2 /usr/local/arm-toolchain
输入命令cd /usr/local/arm-toolchain 进入该目录,输入ls命令会发现该文件夹下多了arm-2009q3.tar.bz2文件
输入命令tar -jxvf arm-2009q3.tar.bz2 对该压缩文件进行解压
解压后多了一个arm-2009q3的文件夹。
4.验证是否安装成功
输入命令cd /usr/local/arm-toolchain/arm-2009q3/bin/
输入命令ls 会发现bin目录下面有一些arm-none-linux-gnueabi的东西,这些就是交叉编译工具链
输入命令./arm-none-linux-gnueabi-gcc -v 可以具体看到交叉编译工具的版本号
5.将工具链导出到环境变量。
此时安装成功,但是每次使用的时候必须带绝对路径才可以使用它,这是因为没有将工具链导出到环境变量,输入命令echo
P
A
T
H
可
以
查
看
当
前
环
境
变
量
输
入
命
令
e
x
p
o
r
t
P
A
T
H
=
/
u
s
r
/
l
o
c
a
l
/
a
r
m
−
t
o
o
l
c
h
a
i
n
/
a
r
m
−
2009
q
3
/
b
i
n
:
PATH 可以查看当前环境变量 输入命令export PATH=/usr/local/arm-toolchain/arm-2009q3/bin:
PATH可以查看当前环境变量输入命令exportPATH=/usr/local/arm−toolchain/arm−2009q3/bin:PATH
再输入命令echo $PATH 会发现环境变量多了/usr/local/arm-toolchain/arm-2009q3/bin
这样就OK了吗?重新打开一个终端,切换到root用户,输入命令echo
P
A
T
H
,
你
会
发
现
这
个
终
端
的
环
境
变
量
里
并
没
有
/
u
s
r
/
l
o
c
a
l
/
a
r
m
−
t
o
o
l
c
h
a
i
n
/
a
r
m
−
2009
q
3
/
b
i
n
。
解
决
的
方
法
是
:
输
入
命
令
v
i
/
.
b
a
s
h
r
c
,
将
e
x
p
o
r
t
P
A
T
H
=
/
u
s
r
/
l
o
c
a
l
/
a
r
m
−
t
o
o
l
c
h
a
i
n
/
a
r
m
−
2009
q
3
/
b
i
n
:
PATH,你会发现这个终端的环境变量里并没有/usr/local/arm-toolchain/arm-2009q3/bin。 解决的方法是:输入命令vi ~/.bashrc,将export PATH=/usr/local/arm-toolchain/arm-2009q3/bin:
PATH,你会发现这个终端的环境变量里并没有/usr/local/arm−toolchain/arm−2009q3/bin。解决的方法是:输入命令vi /.bashrc,将exportPATH=/usr/local/arm−toolchain/arm−2009q3/bin:PATH这句输入到.bashrc文件里并保存即可。
6.此时交叉编译工具链已经完全可以正常使用了,但是为了更好的体验,可以对检查编译工具链建立链接(可以理解为快捷方式),输入命令ln arm-none-linux-gnueabi-gcc -s arm-linux-gcc
编译的时候就可以直接输入arm-linux-gcc,而不用输入arm-none-linux-gnueabi-gcc
注意:此时是root用户下交叉编译工具链安装好了,若切换其他用户,需要同样的上述操作为其他用户安装交叉编译工具链