標(biāo)題: 簡單使用GCC編譯Keil下工程C文件 [打印本頁]
作者: xuwei 時(shí)間: 2015-6-24 16:02
標(biāo)題: 簡單使用GCC編譯Keil下工程C文件
不得不說Keil貌似是國內(nèi)用戶使用最多的IDE了,其被ARM收購之后,ARM嵌入了ARMCC等編譯器推出了Keil MDK開發(fā)環(huán)境更是受到了廣大ARM開發(fā)工程師的歡迎,龐大的用戶群(很多是從當(dāng)年的51等8位機(jī)直接轉(zhuǎn)過來的)、簡潔的管理窗口和友好的UI界面等優(yōu)勢都讓其風(fēng)靡一時(shí),而且畢竟現(xiàn)在成了ARM的“親兒子”了,其對(duì)ARM內(nèi)核的產(chǎn)品支持還是灰常不錯(cuò)的。
而GCC更是大名鼎鼎,這個(gè)至今仍然在維護(hù)的GNU項(xiàng)目下的產(chǎn)物,在N多大牛的維護(hù)下不斷得到優(yōu)化,其強(qiáng)大的編譯效率和跨平臺(tái)能力也是廣為大家所認(rèn)可(Codewarrior10.x之后,針對(duì)ARM的編譯器就是集成了GCC)。
而本文的目的是針對(duì)那些想從GCC平臺(tái)遷移到Keil MDK平臺(tái)的開發(fā)者(并不是代表ARMCC比GCC好,這里不拿這兩者做對(duì)比),可能用習(xí)慣了GCC的話移植到ARMCC下會(huì)有些差別需要注意,如匿名的聯(lián)合體union在ARMCC下是不支持的,要想再ARMCC下使用需要在前面添加“#pragma anon_unions”,而這種格式在GCC卻是直接支持的。
而如果開發(fā)者想將原來在GCC下的工程整體遷移到Kei MDK下,如果工程里存在大量的這種定義,那認(rèn)為的一條條的修改絕對(duì)是一件讓人抓破頭皮的事,呵呵,那有沒有簡單的一蹴而就的方法呢?咳咳,我都這樣說了那肯定就有啦,有點(diǎn)賣關(guān)子了,呵呵,其實(shí)很簡單,我們進(jìn)入到Project->Options…,設(shè)置如下圖所示,即添加“--gnu”即可實(shí)現(xiàn)在Keil工程下使用GNU工具鏈GCC來編譯工程C文件了,是不是有點(diǎn)太簡單了,呵呵。
最后我需要提一句,這個(gè)“--gnu”是添加在C/C++這個(gè)選項(xiàng)卡下的,如果你最開始使用Keil重新新建的一個(gè)工程并添加了Keil自動(dòng)生成的啟動(dòng)代碼的話(startup_xxx.s)請慎用在ASM選項(xiàng)卡下添加“--gnu”,因?yàn)锳RMCC下的匯編格式是與GCC完全不一樣的,所以用GCC來編譯Keil下生成的匯編是不行的,這點(diǎn)需要注意。
糾正:謝謝下面博友的更正,“--gnu”實(shí)際上是在ARMCC中加入支持GNU擴(kuò)展格式,當(dāng)然實(shí)際上Keil是可以添加GCC的編譯器的,通過keil菜單中“Project > Manage > Components, Environment, Books..”添加,前提是你得提前裝好GCC編譯器
作者: maskuang 時(shí)間: 2019-12-4 16:18
這個(gè)gnu很關(guān)鍵啊,謝謝
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |