不得不說Keil貌似是國內用戶使用最多的IDE了,其被ARM收購之后,ARM嵌入了ARMCC等編譯器推出了Keil MDK開發環境更是受到了廣大ARM開發工程師的歡迎,龐大的用戶群(很多是從當年的51等8位機直接轉過來的)、簡潔的管理窗口和友好的UI界面等優勢都讓其風靡一時,而且畢竟現在成了ARM的“親兒子”了,其對ARM內核的產品支持還是灰常不錯的。
而GCC更是大名鼎鼎,這個至今仍然在維護的GNU項目下的產物,在N多大牛的維護下不斷得到優化,其強大的編譯效率和跨平臺能力也是廣為大家所認可(Codewarrior10.x之后,針對ARM的編譯器就是集成了GCC)。
而本文的目的是針對那些想從GCC平臺遷移到Keil MDK平臺的開發者(并不是代表ARMCC比GCC好,這里不拿這兩者做對比),可能用習慣了GCC的話移植到ARMCC下會有些差別需要注意,如匿名的聯合體union在ARMCC下是不支持的,要想再ARMCC下使用需要在前面添加“#pragma anon_unions”,而這種格式在GCC卻是直接支持的。
而如果開發者想將原來在GCC下的工程整體遷移到Kei MDK下,如果工程里存在大量的這種定義,那認為的一條條的修改絕對是一件讓人抓破頭皮的事,呵呵,那有沒有簡單的一蹴而就的方法呢?咳咳,我都這樣說了那肯定就有啦,有點賣關子了,呵呵,其實很簡單,我們進入到Project->Options…,設置如下圖所示,即添加“--gnu”即可實現在Keil工程下使用GNU工具鏈GCC來編譯工程C文件了,是不是有點太簡單了,呵呵。
最后我需要提一句,這個“--gnu”是添加在C/C++這個選項卡下的,如果你最開始使用Keil重新新建的一個工程并添加了Keil自動生成的啟動代碼的話(startup_xxx.s)請慎用在ASM選項卡下添加“--gnu”,因為ARMCC下的匯編格式是與GCC完全不一樣的,所以用GCC來編譯Keil下生成的匯編是不行的,這點需要注意。
糾正:謝謝下面博友的更正,“--gnu”實際上是在ARMCC中加入支持GNU擴展格式,當然實際上Keil是可以添加GCC的編譯器的,通過keil菜單中“Project > Manage > Components, Environment, Books..”添加,前提是你得提前裝好GCC編譯器
|