在Debian中建立Beaglebone black的应用开发环境之三:cross-toolchain的安装

  接着说第二个方面,安装cross-toolchain,注意,我前面说过,我不会说使用SDK来安装,我从头讲自己怎么建立一个cross-toolchain。以下都基于此。

一、cross-toolchain有哪几种?

  适用用BBB的cross-toolchain有可以使用armel的,也使用armhf的,这个因为浮点运算的方法有不同,两者的不同不详说,网上一把把的解释,说的都比我好。

  我建议使用armhf的,因为浮点运算更快,而且本身BBB的MCU就支持硬件浮点运算,debian、unbuntu等都在支持armhf,90%的软件包也支持armhf。


二、简要说明怎么安装armel的cross-toolchain

  其实,TI的EZLinux SDK自带的cross-toolchain就是armel的。在debian(wheezy)下安装armel的cross-toolchain特别简单。

  还记得上一个blog,我们search过arm-linux-gnueabi吗,找到许多软件包吧,那么结合我前面讲的cross-toolchain就是编译、链接、调试的工具组合嘛,怎么装,不是很明了的事儿吗?

  你说对了,直接aptitude install啊!你可以 gcc/g++/gdb。。。。分别装,也可以直接安装一个工具包组合binutils-arm-linux-gnueabi。


三、安装armhf的cross-toolchain

  比较好的一个armhf的cross-toolchain就是linaro的,我们就装它了。

1、下载软件包

  从linaro的网站下载预编译二进制包,地址:https://launchpad.net/linaro-toolchain-binaries/trunk/2013.10

  注意选择的版本哦,我们要使用linux下的哦。选择这个:

  gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux.tar.xz

  然后,将其传递到你的虚拟机下的debian上,什么你问怎么传递?My God,我们前面说如何建立共享文件夹是用来睡觉的?我们前面说的xshell的xftp是吃干饭的?我们前面说的ssh下的rz/sz是用来打酱油的?方法太多了!

  还有一个方法,你的debian已经可以通过桥接网卡上网了,直接在你的debian环境下面去下载啊!


2、解压压缩包

  将你下载的gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux.tar.xz文件,放在一个你想使用的特定目录,比如我的就是:~/BBBProject/CrossToolChain目录,你问我这个目录怎么来的?我服了你了,我是mkdir来的,你呢?

  好了,进入这个目录,看看文件在不在吧:

robeer@RobeerDebianPC:~/BBBProject/CrossToolChain$ ls
gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux.tar.xz
  看到这个文件了,我来解压:

robeer@RobeerDebianPC:~/BBBProject/CrossToolChain$ tar -xvf gcc*.xz
  等啊等,完成了,我们看看,是不是它:

robeer@RobeerDebianPC:~/BBBProject/CrossToolChain$ ls
gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux  gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux.tar.xz
  看到目录了吧,就是它了,它里面有什么呢,你自己进去ls吧。所有工具都在里面,gcc,g++,gdb都有了。

  至此,我们的工具包是安装好了,什么?解压了就安装好了?在win下要安装,要next-next-finish才行啊。在linux下,一切就是这么简单!

  可是不好用啊,每次都要带着全路径使用,怎么办?环境变量啊!


3、设置环境变量

  我们知道linux是采用绝对路径使用的,我们把我们的cross-toolchain所在的目录加入系统的环境变量不就可以直接使用了吗?

  修改环境变量可以有很多种方法,我采用其中一种比较稳妥的方法,修改~/.bashrc
文件。至于为什么是这个文件,请google。

robeer@RobeerDebianPC:~$ sudo nano .bashrc
  然后,在这个文件中,最后一行加入以下两个语句:

PATH=$PATH:/home/robeer/BBBProject/CrossToolChain/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin
export PATH
   请注意,第一行的$PATH后面是英文冒号,而冒号后面是你的cross-toolchain的可执行文件目录(bin目录)的绝对路径。 这两句的意思就是将cross-toolchain的可执行文件路径加入系统环境变量PATH中。

  接下来干吗?让环境变量生效吧!请使用source命令吧

robeer@RobeerDebianPC:~$ source ~/.bashrc
  查看一下环境变量,是否真的生效了,

robeer@RobeerDebianPC:~$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/home/robeer/BBBProject/CrossToolChain/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin:/home/robeer/BBBProject/CrossToolChain/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin
  呵呵,有了,已经生效了。


4、简单测试一下cross-toolchain

  先看看环境变量的作用,是不是使用tab能够补命令,输入arm-linux-gnueabihf,按tab键(两次哦),是不是看到如下:

robeer@RobeerDebianPC:~$ arm-linux-gnueabihf-
arm-linux-gnueabihf-addr2line        arm-linux-gnueabihf-gcc              arm-linux-gnueabihf-gprof            arm-linux-gnueabihf-pkg-config
arm-linux-gnueabihf-ar               arm-linux-gnueabihf-gcc-4.8.2        arm-linux-gnueabihf-ld               arm-linux-gnueabihf-pkg-config-real
arm-linux-gnueabihf-as               arm-linux-gnueabihf-gcc-ar           arm-linux-gnueabihf-ld.bfd           arm-linux-gnueabihf-ranlib
arm-linux-gnueabihf-c++              arm-linux-gnueabihf-gcc-nm           arm-linux-gnueabihf-ldd              arm-linux-gnueabihf-readelf
arm-linux-gnueabihf-c++filt          arm-linux-gnueabihf-gcc-ranlib       arm-linux-gnueabihf-ld.gold          arm-linux-gnueabihf-size
arm-linux-gnueabihf-cpp              arm-linux-gnueabihf-gcov             arm-linux-gnueabihf-nm               arm-linux-gnueabihf-strings
arm-linux-gnueabihf-elfedit          arm-linux-gnueabihf-gdb              arm-linux-gnueabihf-objcopy          arm-linux-gnueabihf-strip
arm-linux-gnueabihf-g++              arm-linux-gnueabihf-gfortran         arm-linux-gnueabihf-objdump   
所有相关的命令都列举出来了吧,环境变量OK了。

  再试一个基本命令,查看一个gcc的版本:

robeer@RobeerDebianPC:~$ arm-linux-gnueabihf-gcc -v
使用内建 specs。
COLLECT_GCC=arm-linux-gnueabihf-gcc
COLLECT_LTO_WRAPPER=/home/robeer/BBBProject/CrossToolChain/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin/../libexec/gcc/arm-linux-gnueabihf/4.8.2/lto-wrapper
目标:arm-linux-gnueabihf
配置为:/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-linux/.build/src/gcc-linaro-4.8-2013.10/configure --build=i686-build_pc-linux-gnu --host=i686-build_pc-linux-gnu --target=arm-linux-gnueabihf --prefix=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-linux/install --with-sysroot=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-linux/install/arm-linux-gnueabihf/libc --enable-languages=c,c++,fortran --enable-multilib --with-arch=armv7-a --with-tune=cortex-a9 --with-fpu=vfpv3-d16 --with-float=hard --with-pkgversion='crosstool-NG linaro-1.13.1-4.8-2013.10 - Linaro GCC 2013.10' --with-bugurl=https://bugs.launchpad.net/gcc-linaro --enable-__cxa_atexit --enable-libmudflap --enable-libgomp --enable-libssp --with-gmp=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-linux/.build/arm-linux-gnueabihf/build/static --with-mpfr=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-linux/.build/arm-linux-gnueabihf/build/static --with-mpc=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-linux/.build/arm-linux-gnueabihf/build/static --with-isl=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-linux/.build/arm-linux-gnueabihf/build/static --with-cloog=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-linux/.build/arm-linux-gnueabihf/build/static --with-libelf=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-linux/.build/arm-linux-gnueabihf/build/static --enable-threads=posix --disable-libstdcxx-pch --enable-linker-build-id --enable-gold --with-local-prefix=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-linux/install/arm-linux-gnueabihf/libc --enable-c99 --enable-long-long --with-mode=thumb
线程模型:posix
gcc 版本 4.8.2 20131014 (prerelease) (crosstool-NG linaro-1.13.1-4.8-2013.10 - Linaro GCC 2013.10)
  看到正确的版本了吧!再试gdb:

robeer@RobeerDebianPC:~$ arm-linux-gnueabihf-gdb -v
GNU gdb (crosstool-NG linaro-1.13.1-4.8-2013.10 - Linaro GCC 2013.10) 7.6.1-2013.10
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "--host=i686-build_pc-linux-gnu --target=arm-linux-gnueabihf".
For bug reporting instructions, please see:
<https://bugs.launchpad.net/gcc-linaro>.

  恭喜你,你的BBB的armhf的cross-toolchain已经成功的建立了。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值