簡體   English   中英

gcc Multiple -o選項如何工作?

[英]How gcc multiple -o option works?

我試圖了解gcc的-o選項如何工作,我知道它用於指定輸出文件名,但是當我寫這樣的東西時會發生什么:

gcc main.c -o test0 -o test1

要么

gcc main.c -o test0 -o test1 -o test2


我注意到:僅考慮最后一個-o <filename> 所以我的問題是:為什么我可以指定多個-o選項? 以及它們如何有用?

您只能有一個輸出文件,該文件的路徑由-o選項指定。

這似乎沒有記錄在案

-o file將輸出放置在file 文件中 這適用於所產生的任何類型的輸出,無論是可執行文件,目標文件,匯編文件還是預處理的C代碼。

如果未指定-o ,則默認值為將可執行文件放入a.out中 ,將source.suffix的對象文件放入 source .o中 ,將其匯編文件放入source .s中 ,將其預編譯的頭文件放入source.suffix .gch中。 ,以及所有標准輸出上的預處理C源代碼。

試一試,它似乎被視為“全局”選項,只允許指定一個輸出文件,只有給定的最后一個-o選項才生效(如問題中所述)。

$ gcc -c foo.c -o fooX.o bar.c -o barX.o
gcc: fatal error: cannot specify -o with -c, -S or -E with multiple files
compilation terminated.

$ gcc -c foo.c -o fooX.o -o fooY.o # produces fooY.o only

如果前一個選項發生沖突,則覆蓋前一個選項對於許多命令行工具來說很常見,有時在編寫腳本時會很有用。 作為一個(可能不太好)的示例,請考慮

alias gcc='gcc -o my_default' # a.out is a bad default name

在您的.bashrc中 你仍然可以輸入

gcc -o foo foo.c

沒有錯誤。 (這個例子是不好的,因為gcc -c foo.c bar.c現在是無效的,但希望它給出了這樣的事情怎么可能是有益的想法。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM