?? 08 編譯器設置.txt
字號:
編譯器選項設置:有ARM C,ARM C++,Thumb C和Thumb C++四種編譯器,這幾種編譯器設置方法相同,以ARM C為例介紹.
1. Target and Source選項卡設置:
Architecture or Processor下拉列表框:用于選擇目標系統中的ARM體系結構版本號或者處理器編號.
Floating Point下拉列表:用于選擇系統中浮點部件的體系結構,設置本選項后將使得特定CPU型號所含的浮點部件的體系結構失效.取值范圍與前面匯編器介紹相同.
Byte Order:使用big-endian內存模式還是little-endian內存模式.
big-endian:地址為A的字單元包括字節單元A,A+1,A+2和A+3字節單元由高位到低位字節順序為A,A+1,A+2,A+3.
little-endian:地址為A的字單元包括字節單元A,A+1,A+2和A+3字節單元由高位到低位字節順序為A+3,A+2,A+1,A.
Source Language:確定源文件的類型,可能取值如下:
ANSI/ISO Standard C:指定源程序滿足比較嚴格的ANSI C標準,這時刪除了一些語言特性,擴展了一些細小的功能.
Strict ANSI/ISO Standard C:指定源程序滿足嚴格的ANSI C標準.
對于C++編譯器來說還有下面三個選項:
ISO/IEC Standard C++:基本滿足ISO/IEC C++標準,擴展了一些細小的功能.
Strict ISO/IEC Standard C++:嚴格滿足ISO/IEC C++標準.
Embedded C++:指定源程序滿足工業C++標準,即Embedded C++標準. Embedded C++語言是標準C++語言的一個子集,它主要用于嵌入式應用環境,更注重代碼執行效率.
2. ATPCS (ARM and Thumb Procedure Call Standard)
interworking 支持/禁用 C,ASM代碼混合使用.
Software stack check 軟件數據棧檢查.
ropi,rwpi 基本同ASM部分
3. Warnings (報警選項設置)
No warnings 關閉所有報警
Warn for all condition 打開所有報警
C/C++:
Assignment in condition : 報警 if(a=b)
ANSI C extension :
1. 對char,long,short,long long 等數據類型進行位操作時.
2. 把char,float,short,或枚舉參數指定給如 va_start()函數時
Header file not guarded : 包含一個無保護的頭文件時報警, 未使用"",<>包含.
Double to float : 改變非限定的浮點常量數據類型時報警
Long precision in wider context : 運算產生了數據擴展.則報警,如 int = int * int ; 而 int*int可能為 long
Implicit narrowing : 下列情況下,在int,char的環境中對長表達式有隱含的限制.在整型數或有限的浮點數環境中對浮點表達式有隱含的限制.
Non ANSI header : 只對ANSI C 頭文件使用包含 # include <>.
Padding inserted in struct : 報警編譯器在結構中插入補丁.
C to C++ incompatibility : 關閉C語言程序中將來可能和C++引起兼容性總理的報警信息.
Unused declaration : 定義了,未使用,則報警.
C++:
Implicit constructor : 在程序中發現隱含構造器時報警
Unused this in non-static member funtion : 報警,在非靜態的元函數中沒有使用隱含的 this 參數.
Member and base inits out of order : 關閉由C++程序中構造器初始化的順序而引起的報警信息.
Implicit Virtual : 一個來自在類的非虛元函數中隱藏了一個父類的虛元函數.
4. Errors (錯誤選項設置)
C/C++:
Implicit pointer cast : 關閉一些隱含的錯誤,如一個隱含的非零 int 轉換到 pointer
Other dubious cast : 關閉一些模糊不清的表達錯誤,例如從short類型到 pointer類型的轉換.
Linkage conflicts : 關閉一個由于鏈接不協調而產生的錯誤.錯誤的原因的原因是:函數被隱含地聲明為extern 后又被聲明為 static.
Junk at end of #endif/ #else / #undef : 關閉由于預處理結尾有多余字符引而引起的錯誤信息
Zero-length arrays : 關閉由于數組長度為零而引起的錯誤信息.
C++:
Access control violations : 不選時,則將錯誤降低為報警.
Implicit 'int' : 當在類似 const i的構造中使用隱含的int數據類型時,系統認為是一個錯誤,使用該選項,則降低到警告.
5. Debug / Optionization (調試和優化選項)
Debug Control
Enable debug table generation : 編譯輸出的文件中會包含調試信息表.
Include preprocessor symbol : 關閉在目標文件中的關于宏定義的調試信息.
Enable debug table generation : 指定 DWARF2 格式為調試信息表格式
DWARF2 是指一個2.0版本的調試信息格式,這是TIC(Tool Interface Standard)國際委員會所制定的,適合32位機的運行環境.
Optimization Level
Minmum : 最低級別優化,編譯器只對源程序進行簡單的轉換,調試信息表最直觀.
Most : 不完全優化,關閉了一些嚴重影響高度效果的優化功能.
All : 完全優化,目標代碼與源代碼之間的對應關系不清晰.
Optimization Criterion
For Space : 優化存儲空間
For time : 優化運行時間
6. Preprocessor (預定義)
查看,定義,刪除宏.
7. Code Generation (設置關于輸出代碼的一些規定)
Split load and store multiple : 指定編譯器把LDM和STM指令分解為兩個或更多個LDM和STM指令,如果一次傳送數據較多,可能會引起超時中斷。
Narrow double constants to float constants : 把無后綴的浮點常量從雙精度改變為不確定的類型。有些情況下可以改進程序執行速度。
On ELF section per function : 指定編譯器為源文件的每一個函數生成一段 ELF 格式的輸出段,輸出段的名稱和函數名相同。
Enum container always int : 強制把枚舉數據都作為整型數據存儲。
Plain char is signed : 把char型數據作為有符號數據。
8. Extras (via 文件格式)
via 文件,保存,導入,以上設置。
其他命令行選項:(IDE下無法設定的)
seach-paths 設定包含文件的搜索路徑。
code-generation-options 輸出代碼的選項。
output-format
-asm 產生一個匯編語言的列表文件
-asm -fs 產生一個匯編語言的列表文件,擴展名是 txt
-c 只進行編譯但不準備鏈接
additional-chechs 附加檢測項。
warning-options 設置報警信息的種類
preprocessor-options 指定預處理的特性。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -