簡體   English   中英

如何編譯C程序而不進行任何優化

[英]How to compile C program without any optimization

如何在不使用gcc / g ++進行任何優化的情況下編譯C程序?

使用-O0是我所知道的最接近的,但是,與其他回復不同,這並不意味着零優化。 您可以計算不同gcc優化級別的啟用優化次數,如下所示(這是gcc 4.8.2):

$ gcc -Q -O0 --help=optimizers | grep enabled | wc -l
52
$ gcc -Q -O1 --help=optimizers | grep enabled | wc -l
80
$ gcc -Q -O2 --help=optimizers | grep enabled | wc -l
110
$ gcc -Q -O3 --help=optimizers | grep enabled | wc -l
119

所以在-O0,啟用了52個優化。 我想一個人可以逐個禁用它們,但我從未見過這樣做。

請注意,gcc手冊頁說:

-O0 Reduce compilation time and make debugging produce the expected results.  This is the default.

它並不承諾零優化。

我不是一個gcc開發人員,但我猜他們會說-O0優化已經變得如此標准,以至於它們幾乎不再被稱為優化,而是“標准”。 如果這是真的,那有點令人困惑,因為gcc仍然在優化器列表中有它們。 我也不太了解歷史:或許對於先前版本-O0確實意味着零優化......

gcc main.c

要么

g++ main.cpp

默認情況下,它不會進行任何優化。 只有在指定-O1, -O2, -O3, etc...才會進行優化。

或者您可以使用-O0開關使其顯式。

除非通過-O標志請求它們,否則不應進行任何優化。 如果您需要撤消構建系統提供的某些默認值, -O0將為您執行此操作,只要它是命令行中的最后一個-O標志即可。

使用gcc,傳入標志:-O 0。

使用編譯器開關-O0

暫無
暫無

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

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