3.1.2. crosstool-ng中交叉編譯前綴的命名規(guī)則
crosstool-ng中,交叉編譯器的(前綴)的名字的命名規(guī)則是:
arch-vendor-kernel-system
對應(yīng)分別是:
arch,,即系統(tǒng)架構(gòu)
表示交叉編譯器,,是用于哪個(gè)目標(biāo)系統(tǒng)架構(gòu)中,用于那個(gè)平臺中的
即,,用此交叉編譯器編譯出來的程序,,是運(yùn)行在哪種CPU上面的
arch的值,常見的有很多種,,比如arm,,x86,mips等等,。
例 3.1. 舉例:交叉編譯器中的arch的值
arm-cortex_a8-linux-gnueabi中的arm
mips-ar2315-linux-gnu中的mips
powerpc-e500v2-linux-gnuspe中的powerpc
x86_64-unknown-mingw32中的x86_64
3.1.2.2. 交叉編譯器名字中的vendor部分
vendor,,即生成廠家,提供商
表示誰提供的,,即誰制作出來這個(gè)交叉編譯器的,。
vendor的值,貌似是可以自己隨便填寫的,。
其他常見寫法,,還有寫成編譯交叉編譯器的作者的自己的名字的
比如,,我叫crifan,那么就可以寫成crifan,,然后生成的交叉編譯器,,就是xxx-crifan-xxx-xxx了。
更加通用的做法,,好像是:
把vendor寫成,,體系架構(gòu)的值,比如我之前針對xscale的去配置crosstool-ng的時(shí)候,,就寫了個(gè)xscale,。
或者寫成CPU的廠家的名字,或者是開發(fā)板的名字等等,。
例 3.2. 舉例:交叉編譯器中的vendor的值
- arm-cortex_a8-linux-gnueabi中的cortex_a8,,就屬于CPU的名字
- mips-ar2315-linux-gnu中的ar2315
- powerpc-e500v2-linux-gnuspe中的e500v2,,也是CPU的內(nèi)核名
- arm-buildroot-linux-uclibcgnueabi中的buildroot,,是之前折騰Buildroot時(shí),看到的,,即Buildroot把自己視為當(dāng)前自己制作出來的交叉編譯器的vendor,。
3.1.2.3. 交叉編譯器名字中的kernel部分
kernel,直譯為,,內(nèi)核
其實(shí)指的是,,你用此交叉編譯器,編譯出來的程序,,所運(yùn)行的目標(biāo)系統(tǒng)
即,,此交叉編譯器,編譯出來的程序,,在什么系統(tǒng)中,,什么環(huán)境中,運(yùn)行,。
而對應(yīng)的環(huán)境或系統(tǒng),,主要有兩種:
- Linux
表示:有OS(此處主要指的是Linux)操作系統(tǒng)的環(huán)境
比如,我用交叉編譯器,,編譯一個(gè)helloworld程序,,然后下載到嵌入式開發(fā)中的嵌入式Linux中運(yùn)行,
就屬于,,用此交叉編譯器,,編譯出來的程序,是要運(yùn)行于,,帶OS,,即嵌入式Linux系統(tǒng),,環(huán)境中的
此處,簡稱為,,有OS的目標(biāo)系統(tǒng):Linux
- bare-metal
bare-metal,,直譯為:裸金屬
表示:無(此處主要指的是Linux)操作系統(tǒng)的環(huán)境,
比如,,用此交叉編譯器,,去編譯一個(gè)Uboot,或者是其他一個(gè)小程序,,是運(yùn)行在,,無嵌入式Linux的時(shí)候,單獨(dú)運(yùn)行的一個(gè)程序,。
比如,,你購買的嵌入式系統(tǒng)開發(fā)版,常常附帶一些小程序,,比如點(diǎn)亮LED,,跑馬燈等程序,就是這種,,運(yùn)行在無OS的環(huán)境的
此處,,簡稱為:無OS系統(tǒng)的:bare-metal
例 3.3. 舉例:交叉編譯器中的kernel的值
- arm-bare_newlib_cortex_m3_nommu-eabi中的bare_newlib_cortex_m3_nommu,此處的bare,,應(yīng)該就是指的是bare-metal,,用于運(yùn)行在無OS的環(huán)境下
- powerpc-e300c3-linux-gnu中的linux
- m68k-unknown-uclinux-uclibc中的uclinux,就是指的是編譯出來的程序,,是運(yùn)行于沒有MMU的uclinux下
3.1.2.4. 交叉編譯器名字中的system部分
system,,直譯為,系統(tǒng)
其實(shí)主要表示的,,交叉編譯器所選擇的庫函數(shù)和目標(biāo)系統(tǒng)
最常見的一些值有,,gnu,gnueabi,,uclibcgnueabi等等,。
所以,,針對上述,gnu,,eabi,,uclibc等幾個(gè)選項(xiàng),,對應(yīng)的常見的一些組合的含義是:
例 3.4. 舉例:交叉編譯器中的system的值
- arm-cortex_a8-linux-gnueabi中的gnueabi,即glibc+eabi
- mips-ar2315-linux-gnu中的gnu,,即glibc+oabi
- powerpc-e500v2-linux-gnuspe中的gnuspe,,沒搞懂啥意思。,。
- x86_64-unknown-mingw32中的mingw32,,用的是Windows下的mingw32的庫
|