[英]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。
哪里
- 預處理= source.i
- 匯編= source.s
- 對象= 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.