簡體   English   中英

看不見的GCC優化標志?

[英]Invisible GCC optimization flags?

我正在使用GCC 4.4.2構建一些大型項目。 由於我要構建它以進行發布,因此我使用-O1 GCC優化標志,但不幸的是,它與我的代碼有些混亂,並且最終的二進制文件無法按預期工作,當使用-O0標志(或不進行優化)構建時,一切正常。 之前我的項目有一個類似的問題,那時候是-fstrict-aliasing標志在-O2優化級別上引起了麻煩,我通過搜索所有標志來設法找到它是由特定標志引起的關於-O2優化級別,在本文檔中進行了介紹:

http://gcc.gnu.org/onlinedocs/gcc-4.4.2/gcc/Optimize-Options.html

現在,我嘗試對他們提到的有關-O1標志的列表進行相同的操作,但是不幸的是,似乎並不是所有提到的標志,還是啟用了一些隱藏標志,因為當我僅使用-O1標志或僅使用-O1標志進行編譯時提供的標志列表(不帶-O1本身),我得到不同的編譯結果,並且我的二進制文件僅使用特定的-O1標志拒絕工作,因此我找不到確切的麻煩選擇。

是否有可能知道-O1選項包括哪些隱藏選項,以及如何禁用其中一些?

您可以在一個小的C文件上運行gcc -Q -v ,以使GCC轉儲正在使用的選項。 在有-O1選項和沒有-O1選項的情況下運行它,以獲取已啟用選項之間的差異。

暫無
暫無

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

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