《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 業界動態 > Ubuntu實現樹莓派交叉編譯

Ubuntu實現樹莓派交叉編譯

2015-09-18
關鍵詞: Ubuntu 編譯

  一、交叉編譯
  在一個平臺上生成另一個平臺上的可執行代碼。為什么要大費周折的進行交叉編譯呢?一句話:不得已而為之。有時是因為目的平臺上不允許或不能夠安裝所需要的編譯器,而又需要這個編譯器的某些特征;有時是因為目的平臺上的資源貧乏,無法運行所需要的編譯器;有時又是因為目的平臺還沒有建立,連操作系統都沒有,根本談不上運行什么編譯器。
  要進行交叉編譯,我們需要在主機平臺上安裝對應的交叉編譯工具鏈(cross compilation tool chain),然后用這個交叉編譯工具鏈編譯源代碼,最終生成可在目標平臺上運行的代碼。
  常見的交叉編譯例子如下:
  1、在Windows PC上,利用ADS(ARM 開發環境),使用armcc編譯器,則可編譯出針對ARM CPU的可執行代碼。
  2、在Linux PC上,利用arm-linux-gcc編譯器,可編譯出針對Linux ARM平臺的可執行代碼。
  3、在Windows PC上,利用cygwin環境,運行arm-elf-gcc編譯器,可編譯出針對ARM CPU的可執行代碼。
  二、名詞解釋
  Linux下的大多數軟件包都使用Autoconf/Automake工具自動生成Makefile,只要使用“./configure”,“make”,“make install”就可以把程序安裝到Linux系統中去了。編譯第三方源代碼時,可以看下工程中的readme和install文件,一般情況下都會寫編譯步驟。
  1、./configure 常用參數
  [--build]
  [--host]
  [--target]
  [--prefix]
  [--help]
  注意:host和--host不是一個意思,host是指宿主機,即編輯和編譯程序的平臺,是個名詞;--host是設置執行文件所運行的主機,是個動詞。
  >> ./configure: 用來生成對應的 Makefile;
  >> --build: 執行代碼編譯的主機,正常的話就是你的主機系統。若無指定使用host的值;
  >> --host: 編譯出來的二進制程序所執行的主機, 交叉編譯工具鏈的前綴。因為絕大多數是如果本機編譯就本機執行,所以這個值就等于build。但是交叉編譯的時候build和host需要設置不同值,用host指定運行主機,即host != build的時候編譯才是交叉編譯。若無指定將會運行`config.guess"來檢測;
  >> --prefix: 安裝目錄,比如 --prefix=/usr 意思是將該軟件安裝在 /usr 下面,執行文件就會安裝在 /usr/bin (而不是默認的 /usr/local/bin),資源文件就會安裝在 /usr/share(而不是默認的/usr/local/share);
  >> --help: 查看參數;
  >> --target: 這個參數比較特殊,表示需要處理的目標平臺名稱,主要在程序語言工具如編譯器和匯編器上下文中起作用,若無指定使用host的值。一般用來編譯工具,比如給arm開發板編譯一個可以處理mips程序的gcc,那么--target=mips;
  >>>> 舉例說明:編譯gcc
  >> ./configure --build=i386-linux --host=arm-linux --target=mipsel-linux --prefix=$(pwd)/_install
  用i386-linux的編譯器進行gcc的編譯,編譯出的gcc運行在arm-linux, 編譯結果存放到$(pwd)/_install路徑下,編譯出的gcc用來編譯能夠在mipsel-linux下運行的代碼。
  2、Makefile包含了一些基本的預先定義的操作:
  >>make: 根據Makefile編譯源代碼,連接,生成目標文件,可執行文件;
  >>make clean: 清除上次的make命令所產生的t文件(后綴為“.o”的文件)及可執行文件;
  >>make distclean: 類似make clean,但同時也將configure生成的文件全部刪除掉,包括Makefile;
  >>make test / make check: 檢查make,確保make沒有出錯,一般在make install之前執行;
  >>make install: 將編譯成功的可執行文件安裝到指定目錄中,一般為/usr/local/bin目錄;
  >>make dist: 產生發布軟件包文件(即distribution package)。這個命令將會將可執行文件及相關文件打包成一個tar.gz壓縮的文件用來作為發布軟件的軟件包。它會在當前目錄下生成一個名字類似“PACKAGE-VERSION.tar.gz”的文件。PACKAGE和VERSION,是我們在configure.in中定義的AM_INIT_AUTOMAKE(PACKAGE, VERSION);
  >>make distcheck: 生成發布軟件包并對其進行測試檢查,以確定發布包的正確性。這個操作將自動把壓縮包文件解開,然后執行configure命令,并且執行make,來確認編譯不出現錯誤,最后提示你軟件包已經準備好,可以發布了;
  三、交叉編譯源代碼
  1、環境
  Ubuntu
  2、樹莓派交叉編譯工具安裝
  step1. 下載樹莓派交叉編譯工具https://github.com/raspberrypi/tools
  step2. 將源碼放到各用戶都能share的文件夾下,如/usr/tools
  step3. 將交叉編譯工具的路徑加到環境變量中,為了以后啟動不用再設置,我加到了bashrc中
  1 $nano ~/.bashrc 2 #在文件的末尾加上: export PATH=$PATH:/usr/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin 3 $source .bashrc
  step4. 檢測是否安裝成功
  way1:
  $arm #雙tab
  顯示以下內容
  環信謝雅杰:Ubuntu實現樹莓派交叉編譯
  way2:
  $arm-linux-gnueabihf-gcc -v #能顯示正確信息 $arm-linux-gnueabihf-g++ -v #能顯示正確信息
  注意:交叉編譯時,如果出現arm-linux-gnueabihf-XXX找不到,確定arm-linux-gnueabihf-XXX -v 是否能輸出正確信息,如果能,可以切到root下進行編譯
  三、編譯源代碼
  1、在寫編譯腳本時,一定要確保編譯器寫的是交叉編譯的編譯器。比如比較常用的Makefile,
  1 demo: $(obj) 2 $(CXX) -o $@ $^ $(LDFLAGS)
  其中的CXX必須是arm-linux-gnueabihf-g++才能編譯出正確的在樹莓派上的可執行文件。
  2、編譯第三方庫
  如果你想設置全局的CC和CXX變量,在每次打開一個新的Terminal時,輸入以下命令:
  1 $export CC=arm-linux-gnueabihf-gcc 2 $export CXX=arm-linux-gnueabihf-g++
  其他的全局變量同上。
  以下列幾個常用的第三方庫交叉編譯步驟
  1>> sqlite3   step1: make clean
  step2: ./configure --host=arm-linux-gnueabihf --prefix=/usr/local/tools/sqlite3
  step3: make
  step4: make install
  2>>curl http://curl.haxx.se/download.html curl-7.43.0.tar.gz
  step1: make clean
  step2: ./configure --host=arm-linux-gnueabihf --prefix=/usr/local/tools/curl
  step3: make
  step4: make install
  step1: ./config no-asm shared --prefix=/usr/local/tools/openssl
  step2: a、修改Makefile CC=arm-linux-gnueabihf-gcc
  b、找到有-m64的地方,將-m64刪除。
  step3: make

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲精品乱码久久久久久按摩观| 亚洲免费观看高清在线观看 | 欧美一区二区三区四区在线观看地址 | 免费成人av在线看| 久久久噜噜噜久噜久久| 久久er精品视频| 久久精品国产久精国产爱| 欧美一区二区黄色| 午夜精品一区二区三区在线| 亚洲一区制服诱惑| 亚洲直播在线一区| 亚洲影视在线播放| 欧美一级黄色录像| 久久精品国产久精国产爱| 欧美亚洲一区三区| 欧美一区三区二区在线观看| 欧美综合国产| 久久综合给合久久狠狠色| 美女福利精品视频| 欧美护士18xxxxhd| 欧美激情欧美激情在线五月| 欧美久久久久| 欧美日韩在线第一页| 国产精品久久久久av| 国产精品一区二区在线观看| 国产一区二区按摩在线观看| 一区二区三区自拍| 91久久极品少妇xxxxⅹ软件| 99亚洲一区二区| 亚洲制服av| 欧美在线观看一区| 亚洲国产精品久久久久婷婷老年| 亚洲精品综合| 亚洲综合欧美日韩| 久久久精品国产一区二区三区 | 久久久国产一区二区| 美女在线一区二区| 欧美精品偷拍| 国产精品美女在线观看| 国语精品一区| 亚洲精品视频在线观看免费| 在线一区二区三区做爰视频网站| 亚洲一区久久久| 久久精品99国产精品日本 | 在线亚洲国产精品网站| 亚洲欧美自拍偷拍| 久久综合狠狠综合久久激情| 欧美精品一区三区在线观看| 国产精品久久久久一区| 激情欧美一区二区| 一区二区不卡在线视频 午夜欧美不卡'| 亚洲欧美国产高清va在线播| 亚洲欧洲一级| 亚洲欧美一区二区三区极速播放| 狼狼综合久久久久综合网 | 欧美一区二区视频观看视频| 免费成人av资源网| 国产精品裸体一区二区三区| 在线播放精品| 亚洲午夜国产成人av电影男同| 久久精品视频在线免费观看| 亚洲一区999| 米奇777超碰欧美日韩亚洲| 欧美午夜在线观看| 一区二区亚洲精品| 亚洲欧美另类中文字幕| 99精品欧美一区| 久久久久久九九九九| 国产精品高清在线| 亚洲国产一区在线| 欧美综合国产精品久久丁香| 亚洲一区二区欧美日韩| 免费成人你懂的| 国产伦理一区| 制服丝袜激情欧洲亚洲| 日韩视频在线观看一区二区| 久久久精品日韩| 国产精品高潮呻吟久久av黑人| 亚洲国产成人精品视频| 欧美一区二区精品| 亚洲欧美视频| 欧美日韩成人综合天天影院| 在线观看成人av电影| 午夜精品影院在线观看| 亚洲视频成人| 欧美激情精品久久久久久蜜臀| 狠狠久久五月精品中文字幕| 先锋影音国产一区| 亚洲欧美在线免费| 欧美日韩免费一区| 亚洲国产日韩一级| 久久精品网址| 久久久久国产精品人| 国产精品欧美经典| 夜夜爽av福利精品导航| 夜夜爽99久久国产综合精品女不卡| 久久一区激情| 国产一区二区观看| 午夜精品久久久久久久久久久久| 亚洲综合第一页| 欧美系列电影免费观看| 99国产精品国产精品毛片| 日韩午夜免费视频| 麻豆精品精华液| 在线播放亚洲| 亚洲国产精品小视频| 久久精品一区中文字幕| 国产乱码精品一区二区三| 中文精品99久久国产香蕉| 亚洲婷婷在线| 欧美无砖砖区免费| 一区二区日本视频| 这里只有视频精品| 欧美日韩一视频区二区| 日韩亚洲一区二区| 亚洲手机在线| 欧美日韩视频| 99国产精品视频免费观看| 9国产精品视频| 欧美日韩午夜精品| 99v久久综合狠狠综合久久| 一区二区三区久久网| 欧美日本免费| 一本大道久久a久久综合婷婷| 亚洲影院在线观看| 国产精品一区二区三区观看 | 久久成人一区二区| 国产小视频国产精品| 欧美在线视频一区二区三区| 老巨人导航500精品| 在线免费一区三区| 99re66热这里只有精品3直播 | 国产精品亚洲激情| 欧美亚洲综合在线| 久热精品视频在线观看| 亚洲国产天堂久久综合网| 99精品久久| 国产精品日韩欧美| 久久www成人_看片免费不卡| 久久婷婷成人综合色| 在线观看视频一区| 一本色道久久88综合亚洲精品ⅰ | 亚洲国产精品久久久久婷婷老年| 亚洲免费黄色| 欧美午夜电影完整版| 亚洲欧美国产不卡| 久久综合中文色婷婷| 亚洲精品视频在线观看网站| 亚洲欧美第一页| 激情综合色丁香一区二区| 亚洲美女区一区| 国产精品视频午夜| 欧美专区在线播放| 欧美成人精品一区二区| 99国产精品久久久| 欧美有码在线视频| 亚洲高清不卡在线| 亚洲小说区图片区| 国内精品久久久久影院 日本资源| 亚洲激情视频网| 欧美视频在线观看 亚洲欧| 欧美一区1区三区3区公司| 欧美大胆成人| 亚洲免费视频网站| 欧美福利一区二区| 亚洲欧美一区二区在线观看| 免费视频亚洲| 亚洲欧美日韩综合一区| 欧美国产在线电影| 亚洲欧美日韩精品一区二区| 欧美成人中文字幕在线| 亚洲一级特黄| 欧美成人亚洲成人日韩成人| 亚洲色图在线视频| 欧美电影电视剧在线观看| 午夜天堂精品久久久久 | 国产精品久久久一区二区| 亚洲国产精品一区二区尤物区 | 亚洲免费观看视频| 国产亚洲一区二区三区在线播放| 亚洲伦伦在线| 黄色亚洲精品| 亚洲欧洲99久久| 91久久综合| 久久综合给合久久狠狠狠97色69| 亚洲视频一区在线观看| 欧美黄色一区| 亚洲高清免费视频| 国产精品美女在线| 一区二区三区蜜桃网| 怡红院精品视频在线观看极品| 亚洲欧美日韩天堂一区二区| 亚洲精品久久久蜜桃| 久久免费黄色| 亚洲欧美国产精品va在线观看| 欧美日韩国产色综合一二三四| 亚洲国产成人porn| 国产亚洲欧美色| 亚洲欧美日韩一区二区三区在线| 日韩亚洲成人av在线|