文档章节

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

robeermy_cn
 robeermy_cn
发布于 2014/03/13 21:48
字数 1500
阅读 3.7K
收藏 0

行业解决方案、产品招募中!想赚钱就来传!>>>

接着说第二个方面,安装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来的,你呢?

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

1:  robeer@RobeerDebianPC:~/BBBProject/CrossToolChain$ ls
2:  gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux.tar.xz

 

看到这个文件了,我来解压:

1:  robeer@RobeerDebianPC:~/BBBProject/CrossToolChain$ tar -xvf gcc*.xz

 

等啊等,完成了,我们看看,是不是它:

1:  robeer@RobeerDebianPC:~/BBBProject/CrossToolChain$ ls
2:  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。

1:  robeer@RobeerDebianPC:~$ sudo nano .bashrc

 

然后,在这个文件中,最后一行加入以下两个语句:

1:  PATH=$PATH:/home/robeer/BBBProject/CrossToolChain/gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux/bin
2:  export PATH

 

请注意,第一行的$PATH后面是英文冒号,而冒号后面是你的cross-toolchain的可执行文件目录(bin目录)的绝对路径。 这两句的意思就是将cross-toolchain的可执行文件路径加入系统环境变量PATH中。

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

1:  robeer@RobeerDebianPC:~$ source ~/.bashrc

 

查看一下环境变量,是否真的生效了,

1:  robeer@RobeerDebianPC:~$ echo $PATH
2:  /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键(两次哦),是不是看到如下:

1:  robeer@RobeerDebianPC:~$ arm-linux-gnueabihf-
2:  arm-linux-gnueabihf-addr2line        arm-linux-gnueabihf-gcc              arm-linux-gnueabihf-gprof            arm-linux-gnueabihf-pkg-config
3:  arm-linux-gnueabihf-ar               arm-linux-gnueabihf-gcc-4.8.2        arm-linux-gnueabihf-ld               arm-linux-gnueabihf-pkg-config-real
4:  arm-linux-gnueabihf-as               arm-linux-gnueabihf-gcc-ar           arm-linux-gnueabihf-ld.bfd           arm-linux-gnueabihf-ranlib
5:  arm-linux-gnueabihf-c++              arm-linux-gnueabihf-gcc-nm           arm-linux-gnueabihf-ldd              arm-linux-gnueabihf-readelf
6:  arm-linux-gnueabihf-c++filt          arm-linux-gnueabihf-gcc-ranlib       arm-linux-gnueabihf-ld.gold          arm-linux-gnueabihf-size
7:  arm-linux-gnueabihf-cpp              arm-linux-gnueabihf-gcov             arm-linux-gnueabihf-nm               arm-linux-gnueabihf-strings
8:  arm-linux-gnueabihf-elfedit          arm-linux-gnueabihf-gdb              arm-linux-gnueabihf-objcopy          arm-linux-gnueabihf-strip
9:  arm-linux-gnueabihf-g++              arm-linux-gnueabihf-gfortran         arm-linux-gnueabihf-objdump   

 

所有相关的命令都列举出来了吧,环境变量OK了。

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

1:  robeer@RobeerDebianPC:~$ arm-linux-gnueabihf-gcc -v
2:  使?用?内?建? specs。?
3:  COLLECT_GCC=arm-linux-gnueabihf-gcc
4:  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
5:  目?标?:?arm-linux-gnueabihf
6:  配?置?为?:?/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
7:  线?程?模?型?:?posix
8:  gcc 版?本? 4.8.2 20131014 (prerelease) (crosstool-NG linaro-1.13.1-4.8-2013.10 - Linaro GCC 2013.10)

 

看到正确的版本了吧!再试gdb:

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

 

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




robeermy_cn
粉丝 12
博文 15
码字总数 16113
作品 0
绵阳
私信 提问
加载中
此博客有 2 条评论,请先登录后再查看。
树莓派(Raspberry Pi):完美的家用服务器

自从树莓派发布后,所有在互联网上的网站为此激动人心的设备提供了很多有趣和具有挑战性的使用方法。虽然这些想法都很棒,但树莓派( RPi )最明显却又是最不吸引人的用处是:创建你的完美家用...

异次元
2013/11/09
6K
8
iOS 应用版本更新检查--Harpy

实现 app 版本检查功能。用户打开app之后,进行app的版本更新检查。如果检查到 appstore 上有当前qpp的新版本,则弹出对话框提醒用户下载。可以设置让用户选择下载或者强制用户下载。 [Code4...

匿名
2013/02/18
1.7K
0
跨平台手机应用开发--Gideros

Gideros 可以让你轻松快速创建 iOS 和 Android 应用,提供用户友好的集成开发环境,内建模拟器对应用进行不同屏幕大小、分辨率下的测试,最大的优点是可即时修改代码即时进行测试,无需编译安...

匿名
2013/02/19
2.7K
0
Android3D应用与游戏开发框架--JQGL

JQGL 是一款针对Android设备上3D应用、游戏的开发框架。 核心功能是OpenGL-ES的使用框架,相对于大部分开发者而已,OpenGL是陌生的,没有专门研究无法进行相关的开发。 本框架针对于Android...

Jping
2013/02/21
1.6K
0
Steam Installer for Wheezy

Linux游戏最近因为Valve旗下Steam平台的支持而获得快速增长。最初Steam只承诺支持最流行的桌面发行版Ubuntu,但最近它已向其它流行发行版开放了大门。但如果你使用的是不那么流行的发行版呢?...

匿名
2013/03/06
850
0

没有更多内容

加载失败,请刷新页面

加载更多

数据获取的小技巧

在大数据如此火的时代,我们要获取更多数据,就要进行数据采集,过滤,然后再进行使用。比如当我们在进行一个项目并且需要大量真实数据时,就需要通过爬虫去获得,有些爬取额数据还不能直接使用,...

xiaotaomi7
9分钟前
8
0
docker cp 容器和虚拟机间的数据拷贝

容器复制到主机 docker cp {container_name}:{source_path} {target_path}#例子: docker cp php:www/php.ini /home/alex/php.ini 主机复制到容器 docker cp {source_path} {container_nam......

关元
17分钟前
13
0
spring boot整合kafaka批量消费

spring boot整合kafaka批量消费: 配置文件: kafka: producer: bootstrap-servers: 127.0.0.1:9092 batch-size: 16785 #一次最多发送数据量 retries: 1 #发送失败后的重复发送次数 buffer-m...

漫步行者
22分钟前
7
0
最新苹果多屏电脑控制技术---ios群控/苹果群控/一键实时同步操作/入门安装步骤以及功能讲解

创联苹果群控是一款通过无线发送命令来操作主控手机来带动全部被控手机,主控手机怎么操作被控手机全部同步进行相同操作,支持一键每台手机输入不一样的文字!无需连接USB数据线、无需XP框架...

osc_bodzcw38
23分钟前
0
0
NOIP模拟赛 编码

题目描述 一个字符串str的p型编码a的定义如下:把str表示成b1个c1,b2个c2…bn个cn,然后将b1,c1,b2,c2,…,bn,cn收尾拼接成的字符串中最短的字符串设为a。例如:字符串122344111可被描述为"1个...

osc_wcs4pa6z
23分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部