Linux之安装交叉编译工具链

什么是交叉编译?

简单来说就是在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: PATHexportPATH=/usr/local/armtoolchain/arm2009q3/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/armtoolchain/arm2009q3/binvi /.bashrc,exportPATH=/usr/local/armtoolchain/arm2009q3/bin:PATH这句输入到.bashrc文件里并保存即可。
6.此时交叉编译工具链已经完全可以正常使用了,但是为了更好的体验,可以对检查编译工具链建立链接(可以理解为快捷方式),输入命令ln arm-none-linux-gnueabi-gcc -s arm-linux-gcc
编译的时候就可以直接输入arm-linux-gcc,而不用输入arm-none-linux-gnueabi-gcc
注意:此时是root用户下交叉编译工具链安装好了,若切换其他用户,需要同样的上述操作为其他用户安装交叉编译工具链

你可能感兴趣的:(Linux)