Keil綜合(01)_一些常見檔案型別的作用和功能說明
轉載自:
https://blog.csdn.net/ybhuangfugui/article/details/70037586
相關標題:
Keil中.uvmpw、.uvprojx、.uvproj、.uvoptx、.uvopt的意思是什麼?
Keil中.d .o .axf .elf這些檔案可以刪除嗎?
前言
看著一大堆檔案舒服嗎?
相信大部分朋友看見過類似上圖“凌亂”的現象。
工程檔案和編譯過程檔案雜亂放在一起,其實只有.uvoptx和.uvprojx這兩個比較重要,其他大部分都不重要。
微主我習慣在工程檔案中放一個“刪除編譯產生垃圾檔案.bat”檔案,在最後原始碼存檔時刪除編譯過程產生的檔案。
Ⅰ、寫在前面
本文說的“檔案型別”指的是像.uvoptx、 .uvprojx、 .hex、 .map、
.axf、.ini、.c、.h···等一些字尾不同的檔案,他們各自的作用和功能。
有時開啟從其他地方獲取的原始檔,發現除了工程檔案“.uvprojx”之外還有很大雜七雜八的檔案,如:.crf、.d、.o···等一些讓人看了都“煩躁”的原始檔。
其實有很多檔案都是在建立工程及編譯之後產生的“中間檔案”,對於我們來說,並不需要儲存,只是在編譯除錯的過程中需要使用到。
當我們需要使用儲存一個工程及相關原始碼時,就需要把有些不必要的中間檔案刪除掉。於是,我們就需要知道這些檔案的意思,哪些檔案可以刪除,哪些不能刪除。
我們使用Go to Definition Of 使用到的檔案為.crf檔案,有時候Go to Definition Of不能使用(或按F12不起作用),有可能就是相關的.crf檔案被刪除了,或者沒有。
線上除錯的時候,不能跟蹤除錯,很有可能是沒有除錯型別檔案。
Ⅱ、Keil中使用到的檔案型別?
大體可以分為7類:
1、Project Files工程型別檔案;
2、Source Files原始碼型別檔案;
3、Listing Files連結型別檔案;
4、Object and HEX Files目標和Hex型別檔案;
5、Build Files編譯型別檔案;
6、Debugger Files除錯型別檔案;
7、Other Files其他型別檔案。
下面章節會將常見的一些檔案型別做詳細說明。
Ⅲ、Project Files工程型別檔案
工程型別檔案是比較重要的,一般不能刪除。刪除之後有可能打不開軟體工程,所以,不能輕易刪除這一類檔案。
.uvmpw:多工程(工作空間)檔案;
.uvprojx:工程檔案(Keil V5)
.uvproj:工程檔案(Keil V4)
.uvoptx:工程選項配置檔案(Keil V5)
.uvopt:工程選項配置檔案(Keil V4)
.uv2:工程檔案(Keil V3)
Ⅳ、Source Files原始碼型別檔案
這一類原始檔,我想,應該不用多說。主要就是原始檔和標頭檔案,大體上有如下一些型別:
.c、 .h、 .cpp、 .inc、 .a51、 .s、 .a66、 .src等。
Ⅴ、Listing Files連結型別檔案
Project -> Options for Target -> Listing,如下圖:
這類檔案的輸出就在上圖的地方配置,需要輸出就勾選上。常見檔案型別有如下幾種:
.map:MAP檔案就是儲存映象檔案,這個檔案非常重要。當代碼出現異常,對分析程式碼非常有幫助,我打算後面專門寫一篇文章來講述這個檔案。
.i:C語言前處理器輸出檔案;
.lst:C編譯器或彙編程式生成的檔案;
.cod:包括混合C和彙編程式碼的完整的程式清單檔案;
Ⅵ、Object and HEX Files目標和Hex型別檔案
Project -> Options for Target -> Output,如圖:
這一類檔案比較重要,除錯資訊、預覽資訊、可執行檔案等都在這裡面。
.hex:可執行檔案(和.bin類似 用於下載到晶片的程式檔案);
.axf:包含除錯資訊的程式檔案,有時候我們在除錯時出現錯誤,可能是axf沒有檔案;
.d:編譯生成的依賴檔案,一般一個.c檔案對應一個.d檔案;
.o:也是目標的依賴檔案(重定位定址的依賴檔案);
.lib:庫檔案,生成庫就在這裡;
.elf:ELF/DWARF連結的檔案;
.crf:瀏覽資訊檔案,在文章開頭說了,使用Go to Definition Of 功能,就需要有這類檔案。
Ⅶ、剩下一些型別檔案
Build Files編譯型別檔案:
這一類檔案重點提一下“bat批處理檔案”,也就是說在編譯的時候,可以配合bat檔案一起編譯。Bat檔案主要就是一些命令,如拷貝、新建等。
Debugger Files除錯型別檔案:
.ini:除錯載入類檔案。就是在除錯時載入的檔案:
Other Files其他型別檔案:
.pack:支援包檔案;
.sct:連結控制檔案;
.lnp:聯結器傳遞命令檔案;
·······
這類檔案還有很多,重要性不強,不一一說明了。
Ⅷ、最後
我的部落格:http://blog.csdn.net/ybhuangfugui
微信公眾號:EmbeddDeveloper
更多精彩文章我將第一時間在微信公眾號裡面分享,如果不想錯過,可以關注我的微信公眾號。