有一種方法可以查看在* nix中使用了哪些編譯器和標志来建立可執行檔案? 我已经編譯了一个旧版本的代碼,我想看看它是经過優化的還是未经優化的. Google並没有太大帮助,但是我不確定我使用的關鍵字是否正確。
最新回復
- 3月前1 #
- 3月前2 #
如果使用
-frecord-gcc-switches
进行編譯 標記,則命令列編譯器選項將以二进製形式寫入註釋部分.另請參阅文件。 - 3月前3 #
另一个選項是-grecord-gcc-swtiches(註意,不是-f而是-g).根据gcc docs的介绍,它將標記放入矮小的除錯資訊中.从gcc 4.8開始,它似乎是預設啟用的。
我發現dwarfdump程式對於提取那些cflag是有用的.註意,字元串程式看不到它们.似乎矮資訊已壓縮。
- 3月前4 #
這需要編譯器支援.您没有提到正在使用什麼編譯器,但是由於您標記了問题
linux
我將假設您使用的是gcc -不会預設您要查詢的功能(但是-frecord-gcc-switches是執行此操作的選項)。如果您想檢查二进製檔案,請
strings
该命令將向您顯示檔案中似乎是可讀字元串的所有內容。 - 3月前5 #
我非常怀疑是否有可能:
int main() { }
使用以下命令編譯時:
gcc -O3 -ffast-math -g main.c -o main
在生成的物件中找不到任何引數:
strings main | grep -O3 (no output)
相似問題
- 如何获取Linux(ubuntu)上的视频捕获設備(網路摄像機)列表? (C / C ++)c++clinuxwebcamdevice2021-01-12 01:27
- c:x86_64 va_list結構的格式是什麼?clinuxx8664variadicfunctionsabi2021-01-12 01:24
- 螺旋規則和"宣告遵循用法"用於解析C和C ++宣告c++cdeclaration2021-01-11 23:57
- c++:什麼是glibc free / malloc / realloc無效的下一个大小/無效的指標錯誤以及如何解決?c++cmemoryglibc2021-01-11 22:57
- 当空指標不全為零時如何正確編寫C / C ++代碼c++ccomputerarchitecture2021-01-11 22:55
- 將型別轉換為int時,是否始终保證C / C ++ bool型別為0或1?c++cboolean2021-01-11 21:24
gcc有一个
-frecord-gcc-switches
選項:然後,ELF可執行檔案將包含
.GCC.command.line
帶有该資訊的部分。当然,如果没有该選項,編譯的可執行檔案將無法使用。
對於簡單的優化情况,如果檔案是使用除錯資訊編譯的,則可以尝試使用除錯器.如果稍稍进行,可能会註意到某些變數已被"優化".這表明已经进行了優化。