與大多數PC機不同,樹莓派採用arm架構的cpu芯片。由於intel芯片採用CISC指令集,而arm採用RISC指令集,這意味着在樹莓派上運行的可執行程序,其遵循的指令集與PC機上的可執行程序遵循的指令集不同。所以PC機上普通的C/C++編譯器產生的可執行程序是不能在樹莓派上運行的。
如何編譯出樹莓派“能識別”的程序呢?辦法有2個:1是在樹莓派上直接安裝編譯器,然後在其上直接編譯;2是在PC機上安裝一個專門針對樹莓派的編譯器。這個編譯器產生的文件是不能在PC機上運行的,但是可以在樹莓派上運行。第二種辦法稱爲交叉編譯。
本文介紹第二種辦法。
步驟:
1 準備一臺安裝了ubuntu的PC機,並在其上安裝git
2 在~文件夾下建立文件夾raspberryPi。在Linux操作系統下,~意味着 /HOME/用戶名/ 路徑。
3 進入該文件夾,輸入
git clone git://github.com/raspberryPi/tools.git
4 下載完畢後,raspberryPi文件夾下將出現tools文件夾。
輸入命令
sudo nano ~/.bashrc
5 在.bashrc中,添加如下代碼:
PATH=$PATH:~/raspberryPi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin
6 按下ctrl+o保存修改,然後按下ctrl+x推出nano編輯器
7 在命令行輸入
arm-linux-gnueabihf-gcc --version
以確定交叉編譯器可用
8 建立一個簡單的cpp文件:helloworld.cpp
#include <stdio.h>
int main(void)
{
printf("hello world!\n");
return 0;
}
9 進入helloworld.cpp所在文件夾下,輸入
arm-linux-gnueabihf-g++ helloworld.cpp -o helloworld
10 將raspberryPi的SD卡取出,通過SD-USB轉換器插入PC機,將第9步中編譯產生的文件helloworld複製到SD卡的~文件夾下
11 將SD-USB轉換器從PC機取出,將SD卡插入raspberryPI中,並將SD卡專用屏也安裝上。(參見我以前的博客 給raspberry Pi B 安裝3.5英寸觸摸屏)。啓動樹莓派。
12 點擊樹莓派界面左上方的命令行圖標,進入~路徑。利用mkdir命令在~路徑下建立文件夾exec.利用mv命令將helloworld移動到exec中。
13 執行命令 ./helloworld,觀察輸出。