2013-02-06 61 views
3

有沒有人知道-c標誌在gcc中做了什麼?GCC中的-c選項做什麼

例如,什麼是我所知道的第二個做出.a文件

gcc -c output0.c 
vs gcc output0.c 

之間的差異,但我不知道什麼.a文件做。

而且什麼是-o

gcc output0.o -o output0 

這只是來命名輸出文件吧?

+3

我建議你閱讀[在線文檔(http://gcc.gnu.org/onlinedocs/)。例如,名爲[「3.2選項控制輸出種類」]的部分(http://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/Overall-Options.html#Overall-Options) –

+0

「只編譯「'gcc -c'只產生目標文件。爲了生成一個可執行文件,你必須再次調用鏈接器。可能是'man gcc'? :) –

+0

一般來說,看看你已經提出的其他問題,你需要學習如何在用你的問題困擾別人之前使用免費的信息。如果你在linux系統上,'man'是你的朋友。如果您沒有在本地找到它,請先使用搜索引擎。 –

回答

1

man gcc

...

-c編譯或彙編源文件,但不鏈接。鏈接階段根本沒有完成。每個源文件的目標文件的最終輸出格式爲 。

默認情況下,源文件的目標文件名由 替換爲.o,.i,.s等後綴.o。

無法識別的輸入文件,不需要編譯或彙編, 被忽略。

...

6

-c

編譯或彙編源文件,但不鏈接。鏈接 階段根本沒有完成。對於每個源文件,最終輸出格式爲 目標文件。

默認情況下,源文件的目標文件名由 替換爲.o,.i,.s等後綴.o。無法識別的輸入 文件,不需要編譯或彙編,將被忽略。

-o文件中的文件的文件

地輸出。無論是哪種類型的 輸出,它都適用,無論它是可執行文件,對象 文件,彙編程序文件還是預處理的C代碼。如果指定了-o不是 ,則缺省值是將可執行文件放在a.out中,source.o中爲source.suffix的目標文件爲 ,彙編程序文件爲 source.s,是源中的預編譯頭文件。 suffix.gch和所有 預處理的C源標準輸出。

更多可以在GCC Manual Page

2

-c找到將指示GCC僅在源文件編譯成一個的.o(對象)文件,但不調用鏈接。

對於包含許多.c文件的項目,通常會先將所有.c文件編譯爲.o文件,然後將所有內容與庫一起鏈接起來。

-c編譯或彙編源文件,但不鏈接。鏈接階段根本就沒有完成。對於每個源文件,最終輸出均以對象 文件的形式存在。

 By default, the object file name for a source file is made by replacing the suffix >.c, .i, .s, etc., with .o. 

     Unrecognized input files, not requiring compilation or assembly, are ignored.