gcc 編譯
hello.c->hello.i(預處理階段,生成中間檔案)->hello.s(彙編階段,生成彙編檔案)->hello.o(編譯階段,生成二進位制**檔案)
->hello(鏈結階段,生成可執行程式)
#預處理階段,主要是將巨集定義替換,條件編譯、標頭檔案包含,可以cat hello.i檔案檢視
gcc -e hello.c -o hello.i
#彙編階段,將預處理檔案生成為彙編檔案,會彙編可以看懂hello.s
gcc -s hello.i -o hello.s
#編譯階段,將彙編檔案編譯為中間目錄檔案
gcc -c hello.s -o hello.o
#鏈結階段,將中間檔案鏈結為可執行檔案
gcc hello.o -o hello
#可以直接跳過-e 、-s 、-c,直接編譯可執行檔案
gcc hello.c -o hello
常用gcc 編譯命令
-c:只編譯,不鏈結,生成.o目標檔案
-o out_filename:輸出指定檔名稱,預設輸出為a.out
-g:若使用gdb除錯,則在編譯時必須加上該選項
-wall:輸出警告資訊
-w:關閉所有警告
-iinclude_dir:
-i後面跟編譯所依賴的頭檔案目錄
-llib_name:
-l後面根據指定的庫名
技術收藏之Linux gcc編譯引數
警告 warning 庫依賴編譯優化 編譯加速 gcc常用選項 傳載自 第一步是進行預編譯,使用 e引數可以讓gcc在預處理結束後停止編譯過程。比如 gcc e hello.c o hello.i預處理的巨集定義插入到hello.i中。第二步是將hello.i編譯為目標 這可以通過使用 c引數來完成...
linux gcc編譯選項
1 安全編譯選項 作業系統提供了許多安全機制來嘗試降低或阻止緩衝區溢位攻擊帶來的安全風險,包括dep aslr等。在使用gcc進行編譯時,可以使用gcc的編譯選項來避免堆疊溢位 整數溢位等問題。2 checksec.sh 3 aslr 位址隨機化 aslr address space layout ...
linux gcc引數詳解
版本 0.13 宣告 這篇文件是我的關於 gcc引數的筆記,我很懷念dos年代我用小本子,紀錄所有的dos 命令的引數.哈哈,下面的東西可能也不是很全面,我參考了很多的書,和gcc的幫助.不全的原因是,有可能我還沒有看到這個引數,另一種原因是,我可能還不會用它 不過,我會慢慢的補齊的.哈哈如果你要轉...