接着說第二個方面,安裝cross-toolchain,注意,我前面說過,我不會說使用SDK來安裝,我從頭講本身怎麼創建一個cross-toolchain。如下都基於此。 html
1、cross-toolchain有哪幾種? linux
適用用BBB的cross-toolchain有可使用armel的,也使用armhf的,這個由於浮點運算的方法有不一樣,二者的不一樣不詳說,網上一把把的解釋,說的都比我好。 redis
我建議使用armhf的,由於浮點運算更快,並且自己BBB的MCU就支持硬件浮點運算,debian、unbuntu等都在支持armhf,90%的軟件包也支持armhf。 shell
2、簡要說明怎麼安裝armel的cross-toolchain bash
其實,TI的EZLinux SDK自帶的cross-toolchain就是armel的。在debian(wheezy)下安裝armel的cross-toolchain特別簡單。 app
還記得上一個blog,咱們search過arm-linux-gnueabi嗎,找到許多軟件包吧,那麼結合我前面講的cross-toolchain就是編譯、連接、調試的工具組合嘛,怎麼裝,不是很明瞭的事兒嗎? ssh
你說對了,直接aptitude install啊!你能夠 gcc/g++/gdb。。。。分別裝,也能夠直接安裝一個工具包組合binutils-arm-linux-gnueabi。 工具
3、安裝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已經成功的創建了。