2016-07-18 129 views
1

假設有2個名爲abc.c和xyz.c的程序。現在我們想要一次處理2個可執行文件。所以我們更改./a.out的名稱使用在c編程中使用gcc命令中的-g和-o選項

gcc -g abc.c -o abc 
gcc -g xyz.c -o xyz 

即使gcc -o abc abc.c的作品。 上述命令中的-g-o指定或描述了什麼? 在重命名./a.out文件的命令中,-g-o的重要性如何。 在此先感謝。

+1

'gcc --help'會告訴你...或者'man gcc'。雖然我們很樂意提供幫助,但我們不是爲了幫助您懶惰,或者是替代檢查文檔。 –

+0

我試過了,但沒有詳細說明。它表示它們會自動傳遞到各個子流程。 –

+0

'gcc --help'是相當無益的。它非常專注於將gcc作爲「編譯器集合」的驅動程序,其中每個編譯器都由幾個子元素組成,而不是針對新用戶提供通用的C/C++編譯器選項。這不是事實上的錯誤,而是針對錯誤的層面。 – librik

回答

1

-g意味着離開輸出文件的調試信息,這是無關的重命名。

-o表示將結果放入指定文件而不是默認文件名(對象文件爲abc.o,對於鏈接的可執行文件爲a.out)。

+0

謝謝我明白了爲什麼他們現在使用。 –

1

https://gcc.gnu.org/onlinedocs/gcc/Option-Summary.html

 
-g 
    Produce debugging information in the operating system's native format (stabs, COFF, XCOFF, or DWARF). GDB can work with this debugging information. 
 
-o file 
    Place output in file file. This applies to whatever sort of output is being produced, whether it be an executable file, an object file, an assembler file or preprocessed C code. 
+0

感謝您的幫助 –

+0

我明白它是如何使用的 –

0

-g一旦使用調試器(如gdb和lldb)開始變得有用。當您連接到正在運行的程序並一次前進一行時,打印/更改狀態。

0

如果我們在編譯時指定-g選項,調試符號將會在輸出文件中可用,當您嘗試使用GDB進行調試時這將非常有用。

如果我們不指定-o選項,輸出將被放置在默認的a.out文件中。因此,如果我們運行

gcc a.c - output will be in a.out 
gcc b.c - output is a.out which is replacing old a.out file 

如果你想輸出不被a.out文件,你可以在編譯

gcc abc.c -o a 

-o和-g選項是不相關的給-o選項。