1)-static
在支援動態鏈結的系統上,這可防止與共享庫鏈結。 在其他系統上,此選項無效
2)-shared
產生乙個共享物件,然後可以將其與其他物件鏈結以形成可執行檔案。 並非所有系統都支援此選項。為了獲得可**的結果,在指定此鏈結器選項時,還必須指定用於編譯的相同選項集(-fpic,-fpic或模型子選項)。
3)-fpic
如果目標機器支援,則發出與位置無關的**,該**適用於動態鏈結並避免對全域性偏移表的大小進行任何限制。 此選項對m68k,powerpc和sparc有所不同。 與位置無關的**需要特殊的支援,因此僅在某些機器上有效。 設定此標誌後,巨集「pic」和「pic」被定義為2
4)-fvisibility=default|internal|hidden|protected:
將預設的elf影象符號可見性設定為指定的選項-除非**中覆蓋了所有符號,否則所有符號均以此標記。使用此功能可以極大地改善共享庫的鏈結和載入時間,生成更優化的**,提供近乎完美的api匯出並防止符號衝突。強烈建議您在分發的所有共享物件中使用此功能。
儘管有命名法,「預設」始終表示公開。即可以從共享物件外部鏈結。在實際使用中,「受保護」和「內部」幾乎沒有用,因此唯一常用的選項是「隱藏」。如果未指定-fvisibility,則預設值為「預設」,即將每個符號設為公開-這會導致與以前版本的gcc相同的行為。
5)-mx32
將"int","long"和指標型別設定為32位,並生成可在任何i386系統上執行的**。
6)-m64
將"int"設定為32位,將"long"和指標型別設定為64位,並為x86-64體系結構生成**。 對於達爾文,僅-m64選項還會關閉-fno-pic和-mdynamic-no-pic選項。
7)-d name
預定義名稱為巨集,定義為1。
8)-d name=definition:
定義的內容被標記和處理,就像它們出現在#define指令的翻譯階段三中一樣。 特別是,該定義將被嵌入的換行符截斷
9)-u name
取消內建的或提供-d選項的名稱的任何先前定義。
10)-undef
不要預定義任何特定於系統或gcc的巨集。 標準的預定義巨集保持定義狀態。
11)-i dir
將目錄dir新增到要搜尋標頭檔案的目錄列表中。
12)-o file
將輸出寫入檔案。
13)-ftemplate-depth=n
模板類的最大例項化深度為n。 模板例項化深度需要乙個限制,以檢測模板類例項化期間的無限遞迴。 符合ansi / iso c ++的程式不得依賴大於17的最大深度(在c ++ 11中更改為1024)。 預設值為900,因為在某些情況下編譯器在達到1024之前可能會耗盡堆疊空間。
14)-wl,option
通過選項作為鏈結器的選項。 如果option包含逗號,則會在逗號處將其拆分為多個選項。 您可以使用此語法將引數傳遞給選項。例如,-wl,-map,output.map將-map output.map傳遞給鏈結器。 使用gnu鏈結器時,您還可以通過-wl,-map = output.map獲得相同的效果。
15)-bprefix
此選項指定在**可以找到編譯器本身的可執行檔案,庫,包含檔案和資料檔案。
16)-pthread
使用pthreads庫增加了對多執行緒的支援。 該選項為預處理器和鏈結器設定標誌。目前gcc 4.5.2中已經沒有了關於 -lpthread的介紹了。所以以後的多執行緒編譯應該用-pthread,而不是-lpthread。
17)-l library
鏈結時搜尋名為library的庫。在命令中寫入此選項的位置會有所不同。鏈結器按照指定的順序搜尋和處理庫和目標檔案。通常,以這種方式找到的檔案是庫檔案-歸檔檔案(lib和.a,其成員是目標檔案)。
18)-ldir
將目錄dir新增到要搜尋-l的目錄列表中
彙編標誌位
of overflow flag 溢位標誌 運算元超出機器能表示的範圍表示溢位,溢位時為1.sf sign flag 符號標誌 記錄運算結果的符號,結果負時為1.zf zero flag 零標誌 運算結果等於0時為1,否則為0.cf carry flag 進製標誌 最高有效位產生進製時為1,否則為0...
標誌位的位運算應用
今天設計新版標誌位,老郭提出了乙個新的方案。以往都是乙個字段設定乙個狀態,tinyint型別,0或者1,但是這樣的壞處是如果乙個資訊表有很多狀態,需要增加很多的字段,空間利用不好,所以他提出用二進位制位運算來解決標示位的問題。設定標示位字段位tinyint型別,也就是最大128,換成二進位制就是有8...
測試標誌位指令
測試某些示志位的情況來設定位元組的指令 這是一大類指令,格式為 setxx reg8 mem8 它的功能是 若條件xx成立,則位元組暫存器reg8或節儲存器單元被設定為1,否則被設定為0.條件xx 見下表 setz sete zf 1 等於零 相等 setnz setne zf 0 不等於零 不相等...