GCC使用基本方法彙總
雖然用linux斷斷續續也差不多三年了,但是卻很少在其下編寫c程式,現在也處於學習gcc的處級階段,現將所學寫成部落格供大家參考學習,同時也歡迎高人指點,如有不對,懇請指出。
初學gcc,最好還是從命令列開始,這樣可知程式的執行步驟,方便以後更深層次的學習。通常程式的執行都會經過編寫、預處理、編譯、彙編、連結這幾個步驟,下面便就這幾個步驟來一一說明。
以下例項都以test.c舉例說明
1.無選項的編譯連結
#gcc test.c
說明:將test.c預處理、編譯、彙編、連結生成可執行檔案,預設生成為a.out可執行檔案。
2.指定可執行檔名稱
#gcc test.c -o test
說明:使用-o引數指定最後生成的可執行檔名稱。
3.選項-E
#gcc -E test.c -o test.i
說明:使用-E參數列明gcc只進行預處理便結束,不再接著進行編譯等後續過程了。
4.選項-S
#gcc -S test.i
說明:使用-S參數列明gcc編譯後便結束,不再進行彙編等後續過程。通常都是用.s檔案替代原來的.c和.i檔案
5.選項-c
#gcc -c test.s
說明:使用-c參數列明gcc編譯或彙編後便結束,不再進行連結過程。通常都是用.o檔案替代..c,.i和.s檔案
6.-選項-o
#gcc test.o -o test
說明:使用-o參數列明gcc將會進行連結並生成最後的可執行檔案。
7選項-O
#gcc -O1 test.c -o test
說明:使用編譯優化級別1編譯程式。級別為1~3,級別越大優化效果越好,但編譯時間越長
8.選項-v
#gcc -v test.c -o test
說明:使用-v顯示編譯時的詳細資訊,編譯器的版本,編譯過程等。
多個原始檔一起編譯的方法
有兩種編譯方法:
假設有兩個原始檔分別為test1c和test2.c
1. 從編譯階段便一起
用法:#gcc test1.c test2.c -o test
作用:將testfun.c和test.c分別編譯後連結成test可執行檔案。
2. 先單獨編譯各個原始檔,然後對編譯後生成的目標檔案進行連結。
用法:
#gcc -c test1.c //將test1.c編譯成test1.o
#gcc -c test2.c //將test.c編譯成test2.o
#gcc -o test1.o test2.o -o test //將test1.o和test2.o連結成test
以上兩種方法相比較,第一種方法編譯時需要所有檔案重新編譯,而第二種方法可以只重新編譯修改的檔案,未修改的檔案不用重新編譯。
相關文章
- GCC 內聯彙編GC
- Linux基本運維彙總Linux運維
- JQuery基本知識彙總;JQuery常用方法;淺入瞭解JQueryjQuery
- GCC內聯彙編(2)GCC生成彙編程式碼簡單例項GC單例
- Linux彙總基本命令【1】Linux
- Oracle 常用方法彙總Oracle
- Redis基本資料型別命令彙總Redis資料型別
- gcc和gdb的基本操作GC
- JavaScript資料方法彙總JavaScript
- 使用JS獲取當前地理位置方法彙總JS
- GCC內聯彙編(1)Get startedGC
- 軟體測試方法彙總
- Windows 8關機方法彙總Windows
- sqlserver字串拆分(split)方法彙總SQLServer字串
- PHP表單提交方法彙總PHP
- 資料預處理方法彙總
- 解壓命令unzip常用方法彙總
- Vue 元件間通訊方法彙總Vue元件
- 機器學習中常見優化方法彙總機器學習優化
- js 常用工具方法彙總JS
- 移動端除錯方法彙總除錯
- excel表格匯入word方法彙總Excel
- 轉發:C#加密方法彙總C#加密
- 【Python】selenium 基礎使用:頁面元素定位方法彙總Python
- [Sqlite] Sqlite的基本日常SQL操作語句彙總SQLite
- pigossbsm 使用問題彙總Go
- Vagrant box 命令彙總彙總
- Vuex基本使用的總結Vue
- 基本彙編指令
- pandas | DataFrame中的排序與彙總方法排序
- MySQL備份和恢復方法彙總MySql
- JS陣列Array的全部方法彙總JS陣列
- JS Object的靜態方法彙總( 上 )JSObject
- goldengate 故障及解決方法彙總Go
- SQL的基本命令和幾個常用函式彙總SQL函式
- Latex使用——Latex資料彙總整理
- T-SQL使用經驗彙總SQL
- rabbitmq安裝使用問題彙總MQ