1. 程式人生 > >樹莓派配置交叉編譯環境

樹莓派配置交叉編譯環境

樹莓派是arm的處理器,而我們使用的伺服器、pc都是X86架構的處理器,CPU的指令集有很大差別,在pc環境下編譯的程式無法直接執行,而且樹莓派相對而言效能沒pc那麼強勁,所以在樹莓派上編譯大段程式碼就很吃力,我曾經就試過在樹莓派上編譯核心程式碼,結果整整一天都沒編譯完。而且樹莓派沒有核心頭,程式也不能直接編譯,so搭建一個樹莓派交叉編譯環境就很有必要了。本來在這學期開始我就試過在我的虛擬機器上搭建交叉編譯環境,但是但是我們學校的校園網用的802.1X認證,真是蛋疼,這個認證不允許網絡卡分享網路,(只要小米wifi寫了一個程式,通過電腦埠轉發資料)所以虛擬機器也上不了網,沒辦法配置。直到昨天買了一個伺服器,我就把它當我的虛擬機器用。

配置環境:ubuntu12.4

首先下載樹莓派交叉編譯工具:https://github.com/raspberrypi/tools,可以用這個工具下wget https://github.com/raspberrypi/tools網速感人,我用伺服器下到哭,以前下了好幾個小時,今天本來想把資料上傳到百度雲,結果一直失敗,過幾天補上來吧。(好啦,上傳到百度雲了,共享出來:連結:http://pan.baidu.com/s/1gecrTYF)

然後,把程式碼解壓出來,這個是使用zip大包,所以用unzip tools.zip,如果你機器上沒有的話就下一個unzip:sudo apt-get install unzip

再把檔案移動到/usr/下:sudo mv tools /usr/

新增環境變數:

$vim  ~/.bashrc 
在檔案的末尾加上: export PATH=$PATH:/usr/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin 
$source .bashrc
               

進行測試:顯示交叉編譯工具的版本資訊arm-linux-gnueabihf-gcc -v

然後,寫一個測試程式

vim a.c

然後把下面程式碼貼上進去
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
int main()
{
        if((write(1, "here is some data\n", 18)) != 18)
                write(2, "A write error has occurred on file descriptor 1\n", 46);
        printf("hello word!\n");
        //exit(0);
        return 0;
}

然後編譯了兩份,一份是共伺服器自帶的gcc編譯的,一份是交叉編譯工具編譯的




編譯過程參照上圖,然後把交叉環境編譯的拷到樹莓派內,效果如下,(hello是伺服器gcc編譯的,是X86平臺的,所以無法執行)



至此,大功告成