簡體   English   中英

如何在Linux中編譯后以這樣的方式編譯c / cpp代碼以提供經過預處理的匯編文件和目標文件?

[英]how to compile c/cpp code in such a way that it gives preprocessed assembled and object file after compilation in linux?

如果源文件是source.cpp,則編譯器輸出在我的目錄中不僅應包含.o文件,還應具有source.i source.s source.o。

哪里

  1. 預處理= source.i
  2. 匯編= source.s
  3. 對象= source.o

我知道正在創建前兩個文件,但后來它們僅被刪除。o文件顯示出來,以便鏈接器可以鏈接目標文件,但我也想看到這兩個文件。

對於Linux的任何標志或東西?

根據gcc手冊頁

-save-temps -save-temps = cwd永久存儲通常的“臨時”中間文件; 將它們放在當前目錄中,並根據源文件命名。 因此,用-c -save-temps編譯foo.c將產生文件foo.i和foo.s以及foo.o。 即使編譯器現在通常使用集成的預處理器,這也會創建預處理的foo.i輸出文件。

所以你應該像這樣編譯你的代碼

g++ -save-temps source.cpp

您可以為編譯器的每個階段創建單個文件。

預處理程序: g++ -E file.cpp -o file.i

譯者: g++ -S file.i -o file.s

匯編器: g++ -c file.s -o file.o

鏈接器: g++ file.o -o file

暫無
暫無

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

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