簡體   English   中英

無法指定具有指定優化的可執行文件

[英]Can't name executable with specified optimization

我必須在編譯在Linux上使用gcc編譯器時編寫的C代碼時關閉優化。 我發現我可以編譯代碼,但是我只能在未指定可執行文件名稱的情況下編譯代碼(默認為a.out)。

所以這工作:

gcc -O0 Problem04b.c

但是我的問題是我必須提交此作業,並且無法提交名為a.out的可執行文件,因為我的講師需要知道這是什么問題。 我意識到我大概可以跑步

cp a.out Problem04b

然后

rm a.out

但是我想知道是否有一種方法可以直接將代碼編譯為可執行文件Problem04b。 我試圖像這樣運行命令:

gcc -O0 Problem04b Problem04b.c

但我沒有運氣。

謝謝你的幫助。

這是-o標志:

 gcc -O0 -o Problem04b Problem04b.c

要指定輸出文件,您需要在gcc使用-o <filename>選項。

注意:這里請注意小寫

就您而言,應該是

gcc -O0 -o Problem04b Problem04b.c

供參考:來自gcc手冊

-o文件

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

實際上,您還希望獲得警告(不會更改生成的可執行文件,但這對您非常有幫助),因此請使用

 gcc -O0 -Wall -Wextra Problem04b.c  -o Problem04b

-Wall選項要求幾乎所有警告, -Wextra選項要求更多警告。

運行您的程序(由於可能的PATH問題,。 ./很有用):

 ./Problem04b

注意-O0是可選的(因為它是默認值),您可以將其刪除。

 gcc -Wall -Wextra Problem04b.c  -o Problem04b

如果要進行真正的優化(例如進行基准測試),請使用-O1-O2-O3

您可能希望使用調試信息進行編譯,然后

 gcc -g -Wall -Wextra Problem04b.c  -o Problem04b

當然,您需要學習如何使用GDB調試器。 因此,請閱讀有關此內容的一些教程,然后輸入

 gdb ./Problem04b

您會收到(gdb)提示。 那時嘗試help

您可能想閱讀GCC文檔中有關調用GCC的章節。

暫無
暫無

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

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