信息技術(shù)的發(fā)展,數(shù)字化產(chǎn)品的普及,導(dǎo)致了對(duì)嵌入式開(kāi)發(fā)的巨大需求。以Linux為宿主機(jī)系統(tǒng),搭配一個(gè)交叉編譯環(huán)境,為嵌入式設(shè)備生成可執(zhí)行程序己成為現(xiàn)在日益流行的編譯嵌入式軟件的解決方案。而開(kāi)放源代碼的GNUT具鏈?zhǔn)且惶组_(kāi)源的開(kāi)發(fā)環(huán)境,是嵌入式軟件開(kāi)發(fā)中理想的交叉編譯器。但現(xiàn)有GNUI具鏈支持的平臺(tái)并不能滿足層出不窮的嵌入式產(chǎn)品的開(kāi)發(fā)需要,仍有許多平臺(tái)得不到支持,例如我們進(jìn)行的minix向ARM-MINIX平臺(tái)的移植。 本文以在linux環(huán)境下構(gòu)建MINIX嵌入式系統(tǒng)的交叉編譯工具鏈為背景,首先介紹了交叉編譯系統(tǒng)的基本組成和結(jié)構(gòu),以及利用GCC構(gòu)建交叉編譯環(huán)境的優(yōu)越性。然后對(duì)目標(biāo)平臺(tái)作了介紹。分析了GCC編譯器,說(shuō)明了GCC的設(shè)計(jì)思想,系統(tǒng)結(jié)構(gòu),介紹了GNU Binutils的功能,使用方法;接著分析了GNU工具鏈中的GAS和GLD的實(shí)現(xiàn)機(jī)制及源代碼結(jié)構(gòu),由于BFD是GNUBinutils的基礎(chǔ),GAS和GLD都是使用BFD庫(kù)來(lái)操作目標(biāo)文件,因此在這一部分本文對(duì)BFD庫(kù)的工作機(jī)制,數(shù)據(jù)結(jié)構(gòu)也作了重點(diǎn)分析。緊接著說(shuō)明了GCC交叉編譯系統(tǒng)的移植思路和方法,實(shí)現(xiàn)難點(diǎn),以及一些相關(guān)技術(shù)細(xì)節(jié),這涉及到了若干重要的C源文件,Makefile,配置文件的修改,重點(diǎn)給出了BFD庫(kù),GAS和GLD的分析及其重定向(通常GCC生成的目標(biāo)程序是針對(duì)GNU/Linux系統(tǒng)的)的實(shí)現(xiàn);然后本文給出了在GNU/Linux宿主機(jī)上構(gòu)建針對(duì)ARM-MINIX的參數(shù)設(shè)置及過(guò)程:最后對(duì)本文所做的工作進(jìn)行了總結(jié)。
標(biāo)簽:
ARM-MINIX
GNU
嵌入式系統(tǒng)
上傳時(shí)間:
2013-05-31
上傳用戶:wangzhen1990