編譯工具鏈還傻傻分不清嗎?
2.工具鏈的命名規(guī)則[arch]- [vendor]-[os]-[bi(eabi/abi)]-[gxx][]中的內(nèi)容表示可選項(xiàng)arch:代表架構(gòu),如arm、mips等等vendor:代表提供工具鏈的廠商os:表示目標(biāo)操作系統(tǒng),如果給裸機(jī)可選擇linux加上-static靜態(tài)鏈接,不使用動(dòng)態(tài)庫,將要用到的庫全部編譯到可執(zhí)行文件中,或者選用一個(gè)none的也可以,這時(shí)很靈活的,可以自己分辨bi:代表二進(jìn)制程序接口,例如針對(duì)嵌入式平臺(tái)選擇eabigxx:可選擇使用gcc、g 、ld等等工具ABI與EABI的區(qū)別這部分定義了數(shù)據(jù)類型在內(nèi)存中的布局方式(數(shù)據(jù)大小/對(duì)齊方式)嵌套函數(shù)調(diào)用的工作方式程序啟動(dòng)/初始化如何工作ABI全稱Application Binary Interface 應(yīng)用程序二進(jìn)制接口,可理解為應(yīng)用程序和操作系統(tǒng)之間的接口,適用于x86/x64。EABI全程Embedded Binary Interface 嵌入式二進(jìn)制接口,適用于嵌入式的二進(jìn)制程序接口。實(shí)例arm-linux-gnueabi-gcc:該工具鏈用于arm架構(gòu),適用于裸機(jī)系統(tǒng),嵌入式平臺(tái),用于編譯c語言文件。不適用linux系統(tǒng)(不支持編譯使用了linux相關(guān)c庫API的程序,例如含有fork函數(shù))。arm-none-linux-gnueabi-gcc:該工具鏈用于arm架構(gòu),適用于Linux系統(tǒng),嵌入式平臺(tái),用于編譯c語言文件??删幾gu-boot、linux內(nèi)核、適用于arm的linux程序等關(guān)于某個(gè)工具鏈的詳細(xì)特性可以查閱該工具鏈的參考手冊。
敬請(qǐng)大家星標(biāo)關(guān)注公眾號(hào)《朱老師IT充電站》。
每天了解一些新技術(shù),每天辯一些真道理!
轉(zhuǎn)發(fā)收藏點(diǎn)贊在看