交叉編譯器詳解

1.什麼是交叉編譯器

嵌入式開發一般都是在x86平臺下開發,而編譯出來的軟件要在arm平臺上跑,所以需要交叉編譯器,交叉的意思就是在一個架構上編譯出另一個架構的代碼。arm平臺一般資源有限,不適合做開發

交叉編譯器安裝方式

以Linaro gcc爲例子:
1.sudo apt-get install gcc-arm-linux-gnueabihf
2.官網下載:https://releases.linaro.org/components/toolchain/binaries/4.9-2017.01/arm-linux-gnueabihf/
在這裏插入圖片描述
在這裏插入圖片描述

命名規則

在這裏插入圖片描述在這裏插入圖片描述
以arm-linux-gnueabihf-gcc爲例說明各字段含義
1.arm表示目標芯片架構,若爲大端模式則armeb或者armbe
2.linux表示運行環境爲linux系統,程序可以使用linux下的c標準庫或者linux內核提供的API。armeabi-gcc 或 arm-none-eabi-gcc 表示它們的目標程序運行在無操作系統的環境中。實際開發基本都是使用arm-linux-gnueabihf-gcc,包括裸機和uboot,內核代碼本身,如果沒有用到linux相關的不會出錯,但是這樣不夠嚴謹,所以最好使用arm-none-eabi-gcc
3.表示c標準庫類型爲gnu的glibc庫
4.eabi表示嵌入式架構
5.hf:硬浮點模式 ,沒有hf的表示軟浮點模式
6.編譯器版本號,一般都是向下兼容,但是某些程序需要特定版本的編譯器

編譯器類型對程序的影響

編譯器 和庫要配套,如果使用軟浮點編譯,提供庫文件又是硬浮點模式的就會出錯

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章