一 選項-o
1 點睛
選項-o用於指定要生成的結果檔案,後面跟的就是結果檔案名字。
o是output的意思,不是目標的意思。
結果檔案可能是預處理檔案、彙編檔案、目標檔案或者最終可執行檔案。
2 示例
gcc -s test.i -o test.s
# -s 說明只進行到編譯階段
# 生成彙編檔案test.s
3 示例
gcc -c test.cpp -o test
# 這個gest是目標檔案,不是可執行檔案,因為這裡用到了-c,告訴gcc到彙編為止,不要進行鏈結。
gcc -c test.cpp -o test.o
# 這個test.o和test一樣,都是目標檔案
4 示例
gcc test.c -o test
# 生成可執行檔案test
二 選項-c
1 點睛
選項-c告訴gcc對原始檔進行編譯會彙編,但不進行鏈結。此時,將生成目標檔案,如果沒有指定輸出檔案,就生成同名的.o檔案。
2 示例
[root@localhost temp]# gcc -c test.cpp
[root@localhost temp]# ll
total 8
-rw-r--r--. 1 root root 188 mar 10 11:00 test.cpp
-rw-r--r--. 1 root root 1504 mar 10 11:00 test.o
# 生成了目標檔案test.o
3 示例
[root@localhost temp]# gcc -c test.cpp -o test
# test是目標檔案,而不是可執行檔案,下面測試可證明,它和test.o內容相同
[root@localhost temp]# ls
test test.cpp test.o
[root@localhost temp]# ./test
-bash: ./test: permission denied
[root@localhost temp]# chmod +x test
[root@localhost temp]# ./test
-bash: ./test: cannot execute binary file
[root@localhost temp]# md5sum test.o
3edeaa07cd496b92e1fd5c287de2131b test.o
[root@localhost temp]# md5sum test
3edeaa07cd496b92e1fd5c287de2131b test
4 -c後跟多原始檔情況
當-c後跟多個原始檔,會為每個原始檔生成乙個.o檔案,但此時是不能使用-o的。
5 實戰
test1.cpp內容
[root@localhost temp]# cat test1.cpp
#include int t1()
test2.cpp內容
[root@localhost temp]# cat test2.cpp
#include int t2()
進行-c編譯和彙編
[root@localhost temp]# ll
total 12
-rw-r--r--. 1 root root 186 mar 10 11:05 test1.cpp
-rw-r--r--. 1 root root 186 mar 10 11:06 test2.cpp
-rw-r--r--. 1 root root 188 mar 10 11:00 test.cpp
[root@localhost temp]# gcc -c test.cpp test1.cpp test2.cpp
[root@localhost temp]# ls
test1.cpp test1.o test2.cpp test2.o test.cpp test.o
# 可以看到,分別生成了3個.o檔案
# -c 企圖用-o,會報錯
[root@localhost temp]# gcc -c test.cpp test1.cpp test2.cpp -o test.o
gcc: fatal error: cannot specify -o with -c, -s or -e with multiple files
compilation terminated.
# 如果直接生成可執行檔案(不用-c),即使有多個原始檔,-o也是可用的。
[root@localhost temp]# gcc test.cpp test1.cpp test2.cpp -o test
[root@localhost temp]# ls
test test1.cpp test1.o test2.cpp test2.o test.cpp test.o
[root@localhost temp]# ./test
hello, boy
GCC編譯選項
gcc g 在執行編譯工作的時候,總共需要4步 1.預處理,生成.i的檔案 預處理器cpp 2.將預處理後的檔案不轉換成組合語言,生成檔案.s 編譯器egcs 3.有彙編變為目標 機器 生成.o的檔案 彙編器as 4.連線目標 生成可執行程式 鏈結器ld 引數詳解 c 只啟用預處理,編譯,和彙編,也...
gcc 編譯選項
gcc 編譯選項,自己翻譯的.gcc 編譯選項,自己翻譯的.o 設定輸出檔名 c 只編譯,不連線.e 只做預編譯.pipe 在多個編譯過程之間使用管道.version 顯示版本.static 靜態連線.ansi c 模式下支援所有 iso c90 標準的 c 程式,c 模式下去除對 gnu c 擴充...
gcc 編譯選項
wall 大部分警告 wextra 一些額外的警告 werror 當出現警告時轉為錯誤,停止編譯 wconversion 一些可能改變值的隱式轉換,給出警告。wno unused parameter 函式中出現未使用的引數,不給出警告。wold style cast c風格的轉換,給出警告 wove...