日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

树莓派学习笔记——交叉编译工具链

發布時間:2025/6/15 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 树莓派学习笔记——交叉编译工具链 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

0.前言

【1】為什么要使用交叉編譯
??? 交叉編譯工具較快開發的速度。樹莓派中已經安裝了gcc工具鏈,可在樹莓派中直接編譯源代碼生成可執行文件。于此同時,PC機上也可使用gcc工具鏈生成可執行代碼,但是和樹莓派上的gcc工具不同,PC機上的gcc工具生成intel或amd芯片上可執行的代碼,但樹莓派卻是arm系列的芯片,顯然存在不小的差異。那么使用交叉工具鏈便可在PC機上開發樹莓派中可執行程序。 ????雖然樹莓派的主頻可達700MHz遠高于一般的嵌入式系統,但相比于PC機其性能還是差些,使用交叉工具鏈可節約開發時間。在編譯鏈接同等規模的代碼時,PC機所用的時間應少于樹莓派所用時間,通過交叉編譯的方法提高效率。

【2】PC機環境 ubuntu 14.04 amd64 ? ? 請注意32位系統和64位系統存在差異,請注意博文中相關章節的描述。本文的程序在ubunut 14.04 amd64系統,lubuntu 14.04 i386系統中測試通過(硬盤安裝,非虛擬機環境)。

1.設置交叉工具鏈

【1】下載必要的軟件和工具 ????sudo?apt-get?install?build-essential git
【2】clone交叉工具鏈
??? 在home路徑下建立一個文件夾取名為rpi
??? mkdir rpi
??? 進入該目錄并執行clone操作(更正一處錯誤)
? ? cd rpi
? ? git clone git://github.com/raspberrypi/tools.git
??? 請注意clone的時間較長請耐心等待。clone完成之后可進入以下目錄查看工具鏈的具體內容。
????cd ~/rpi/tools/arm-bcm2708/
【特別提醒】 克隆完成之后可以通過pull更新tools cd ~/rpi/tools git pull origin
??? 該目錄中存在4個文件夾,本例使用gcc-linaro-arm-linux-gnueabihf-raspbian?或?gcc-linaro-arm-linux-gnueabihf-raspbian-x64。前者對應32位系統后者對應64位系統。
????arm-bcm2708hardfp-linux-gnueabi??
????gcc-linaro-arm-linux-gnueabihf-raspbian ????arm-bcm2708-linux-gnueabi????????
????gcc-linaro-arm-linux-gnueabihf-raspbian-x64
【3】加入環境環境變量
??? 在/.bashrc文件中加入gcc交叉工具鏈目錄。
??? sudo gedit ~/.bashrc
??? 在該文件最后加入交叉工具鏈所在目錄。請注意~符號表示HOME路徑,.bashrc為隱藏文件。
? ? 【32位系統】 ????export PATH=$PATH:$HOME/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin ? ? 【64位系統】
????export PATH=$PATH:$HOME/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin
? ? 請注意PATH代表環境變量,:冒號代表追加。 ? ? 保存并退出文件,接著執行以下指令以便立即更新當前控制臺所包含的環境變量。
????source?.bashrc

【4】簡單測試
??? 為了測試交叉工具鏈是否安裝成功,可在控制臺中輸入
????arm-linux-gnueabihf-gcc -v ??? 控制臺中輸出內容如下,次步驟可證明交叉工具鏈安裝完成且環境變量設置無誤。

圖1?arm-linux-gnueabihf-gcc版本信息

2.簡單的例子

??? 編寫一個測試文件,在PC機上完成編譯然后通過FTP上傳到樹莓派中并執行。
? ? 【測試代碼】 ? ? 文件名為hello-world.c,該例子僅測試交叉編譯是否成功并簡單測試了浮點數功能。
[cpp]?view plaincopy
  • #include?<stdio.h>??
  • int?main(void)??
  • {??
  • ????float?pi?=?3.14;??????
  • ????printf("Hello?World\n");??
  • ????printf("%.2f\n",2*pi);??
  • }??

  • ? ? 【交叉編譯——簡單指令】
    ??? cd進入hello-world.c所在目錄,輸入以下指令以生成可執行文件。請注意該可執行文件不能在PC機上運行。 ????arm-linux-gnueabihf-gcc?hello-world.c -o hello-world ??? 最終可在hello-world.c的同目錄中生成hello-world可執行文件。
    ? ? 【交叉編譯——makefile】
    ??? 當然也可在該目錄下建立makefile文件,簡單的makefile文件如下
    [plain]?view plaincopy
  • CC=arm-linux-gnueabihf-gcc??
  • hello-world:hello-world.o??
  • clean:??
  • ????rm?-rf?hello-world.o?hello-world??

  • ??? 在makefile文件中使用了至少兩條隱含規則,CC為默認工具鏈;*.o文件由同名的*.c文件生成。
    ??? 那么在控制臺中輸入make即可生成可執行文件。

    ? ? 【FTP上傳】 ??? 可在ubuntu中安裝filezilla軟件,該軟件具有ubuntu版本可通過ubuntu軟件中心直接安裝。ubuntu版本和windows使用方法相同。
    圖2 使用FileZilla上傳文件

    ? ? 【SSH登陸執行】
    ??? 假設raspberry的IP地址為192.168.1.107,可使用以下指令登陸raspberry
    ??? ssh pi@192.168.1.107
    ??? 登陸之后進入可執行文件所在目錄,修改該文件的執行權限。
    ??? sudo chmod 755 hello-world
    ??? 該文件的所有者為pi,所有者pi對于該可執行文件具有可寫可讀可執行權限(7),755中的后兩個55為可讀與可執行,本例中對于hello-world用處不大。
    ??? 輸入以下指令便可運行該文件
    ??? ./hello-world
    ??? 控制臺輸出結果,至此可完全證明交叉工具鏈工作正常。

    圖3 樹莓派中執行結果

    3.總結

    ??? 最近也時工作需要重新學習了交叉工具鏈的安裝和使用。網上閱讀了很多關于樹莓派交叉工具鏈的資料,反復嘗試總是出現問題,可能為樹莓派版本和交叉工具鏈版本差異產生的問題。希望這篇博文可以幫助各位,如果存在問題請留言。

    《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

    總結

    以上是生活随笔為你收集整理的树莓派学习笔记——交叉编译工具链的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。