嵌入式Linux交叉編譯環境搭建

教程 90761瀏覽 12評論

在搭建好 Linux 環境之后,開始寫目標板程序代碼之前,還得再做一件事情:搭建交叉編譯環境。ubuntu

平時在電腦上用 gcc 編譯出來的可執行程序只能在電腦上運行,而不能直接在 ARM 平臺上運行。所以我們必須在電腦上搭建好交叉編譯環境,編譯出針對 ARM Linux 平臺的可執行代碼。

這里只對 Linux 環境下的交叉編譯環境搭建進行一步一步地說明。

下載交叉編譯器

http://www.sqtpkw.live/arm-none-linux-gnueabi-gcc?下載合適版本的交叉編譯器,這里以下載arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz 為例。

交叉編譯器的版本并不是隨意選擇,最好是跟編譯目標板上的文件系統的版本一致,這樣才能保證編譯時用的庫跟運行時用的庫是一致的,否則有可能編譯出來的程序在目標板上無法運行。比如:目標板文件系統是用?arm-2010q1-202 版本的交叉編譯器編譯,如果應用程序是用?arm-2013.11-33 版本的交叉編譯器來編譯,編譯出來的可執行程序放到目標板上無法運行,這里需要將?arm-2013.11-33 交叉編譯器的 lib 目錄下的一些庫復制目標板的 /usr/lib 目錄下才能運行,這樣應用程序運行時才能找到正確的依賴庫。

解壓交叉編譯器

下載完?arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz 后,假設下載在 ~/toolchain 目錄,執行下面命令來解壓安裝交叉編譯器:

$ cd ~/toolchain

$ tar xvjf?arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz -C <TOOLCHAIN PATH>

上面的<TOOLCHAIN PATH>表示想將交叉編譯器安裝在哪個路徑,用實際要安裝的目錄替換<TOOLCHAIN PATH>就可以了。

設置環境變量

安裝完交叉編譯器之后,接下來就是設置環境變量了,先設置 PATH 環境變量:

$ export PATH=$PATH:<TOOLCHAIN PATH>/bin

再設置 CROSS_COMPILE 環境變量;

$ export CROSS_COMPILE=arm-none-linux-gnueabi-

使用上面方法配置的環境變量只對當前的終端有效,如果另外打開一個終端或是重啟終端就需要重新設置環境變量。所以如果是經常要用到的環境變量的配置,一般都直接寫到 ~/.bashrc(只對當前用戶有效)或者是 /etc/profile(對所有用戶有效),這里假設在 ~/.bashrc 文件里配置環境變量。

用 vi 編輯器打開 ~/.bashrc,并將上面兩個環境變量的配置寫到該文件的末尾:

$ vi ~/.bashrc

# ......

export PATH=$PATH:<TOOLCHAIN PATH>/bin

export CROSS_COMPILE=arm-none-linux-gnueabi-

“# ......”表示 ~/.bashrc 原來的內容,把那兩個環境變量的配置寫到文件之后保存退出,重啟終端就生效了,不需要再手動輸入之前的命令來配置環境變量。

測試環境變量是否正確

配置好環境變量后,在終端輸入“arm-”再連續按兩次“Tab”鍵,如果 PATH 環境變量設置正確終端上就會有所有類似以下的輸出:

$ arm-

arm-none-linux-gnueabi-addr2line ? ?arm-none-linux-gnueabi-ar

arm-none-linux-gnueabi-as ? ? ? ? ? ? ? ?arm-none-linux-gnueabi-c++

arm-none-linux-gnueabi-cpp ? ? ? ? ? ??arm-none-linux-gnueabi-cs

...............

也可以運行下面命令來查看交叉編譯器的版本:

$?arm-none-linux-gnueabi-gcc -v

要是發現上面的方法的用不了,輸入下面命令來檢查環境變量的值,檢查環境變量的格式和工具的路徑是否正確:

$ echo $PATH

$ echo $CROSS_COMPILE

PS: 關于 vi 編輯器的使用,歡迎參閱另一篇文章 vi編輯器快速使用指南。:)

發表我的評論
取消評論

表情

Hi,您需要填寫昵稱和郵箱!

  • 昵稱 (必填)
  • 郵箱 (必填)
  • 網址

網友最新評論 (12)

  1. 講的挺詳細的 就是我不太懂這個
    東北黑木耳 5年前 (2015-05-25) 回復 編輯
  2. 我來啦
    卡絲代理 5年前 (2015-07-13) 回復 編輯
  3. 學習
    松露是什么 5年前 (2015-08-04) 回復 編輯
  4. 網站不錯很漂亮,歡迎互訪!
    最勵志官網 4年前 (2015-08-31) 回復 編輯
  5. 不錯 學習了!
    歪妖內涵網 4年前 (2015-09-01) 回復 編輯
  6. 終端輸入 arm- 后 按tab可以正常填充 ,但是運行的話提示 “-bash: ./arm-none-linux-gnueabi-gcc: No such file or directory” 呢?
    p0w3r 4年前 (2015-09-17) 回復 編輯
  7. 秒贊不是偶然,是一種態度!
    內涵段子 4年前 (2015-10-02) 回復 編輯
  8. 頂你一下,好貼要頂!
    普拉提美女 4年前 (2015-10-06) 回復 編輯
  9. 不錯!不錯!不錯!
    之遙 4年前 (2016-01-04) 回復 編輯
  10. 不知咋就找到你的博客了 還挺不錯 [給力]
    無聊賺 4年前 (2016-01-30) 回復 編輯
七星彩走势图2元网官网