答えて
はい。
gcc
-save-temps
オプションをご覧ください。
ソースファイルをコンパイルし、前処理の結果を.i
ファイルに保存します。 (また、アセンブラフェーズの結果を.s
ファイルに保存します)。
gcc -save-temps -c main.cc -o main.o
main.o
もmain.i
とmain.s
を生成します。
main.i
は、前処理の結果です。
を生成する
gcc -E -c main.cc -o main.o
はありません、-E
自体で、-s
、-c
と-E
オプションは、オプションの "停止" と呼ばれていません。彼らは実際に特定のポイントでプロセスを停止するので、続行できません。
これを実行するには、2回のパスで実行するか、-save-temps
を使用して、コンパイル時に通常削除された一時ファイルのコピーを保持する必要があります。 gcc
manページから
、-E
を議論するもの(少し言い換え):
そしてあなただけのコンパイルの段階のいくつかをしたい場合、あなたはどこから始めればGCCを伝えるために-x(またはファイル名の拡張子)を使用することができます、そして-c、-S、-Eのいずれかのオプションを指定すると、gccがどこで停止するのかが分かります。いくつかの組み合わせ(たとえば、-x cpp-output -E)はgccに何も行わないよう指示します。
-Eは、前処理段階の後で停止します。適切なコンパイラを実行しないでください。出力は、標準出力(または-oが指定されている場合は出力ファイル)に送信される、前処理されたソースコードの形式です。
-Eオプションを使用すると、前処理以外は実行されません。
-save-temps
の説明:
-save-tempsを
ストア永久に通常の "一時的" 中間ファイル。それらを現在のディレクトリに置き、ソースファイルに基づいて名前を付けます。
したがって、-c -save-tempsでfoo.cをコンパイルすると、ファイルfoo.iとfoo.s、およびfoo.oが生成されます。
これは、コンパイラが通常は統合プリプロセッサを使用していても、プリプロセスされたfoo.i出力ファイルを作成します。
詳細情報をありがとう! – alesko
- 1. gccを使用してプリプロセッサ出力をコンパイル
- 2. これはgccプリプロセッサのバグですか?
- 3. C++プリプロセッサの出力で<built-in>とは何ですか?
- 4. 1回のanimateWithDurationコールでスケールと回転を行う方法
- 5. GCC出力MSVCスタイルエラー
- 6. (奇妙な?)GCCプリプロセッサの振る舞い
- 7. 理解のgcc -S出力
- 8. GCCでリストイテレータをコンパイルするときのテンプレートコンパイル時エラーGCC
- 9. Rails 3:部分レンダリングを2回、通常は1回、エスケープ出力として1回
- 10. ループの内容を1ループで2回出力しますか?
- 11. GCCは実行時に固定値で計算を終了するか、出力をコンパイルしますか?
- 12. OS X llvm-gcc出力ELF
- 13. UNIXの印刷ループ出力を1行に出力
- 14. Objective-Cプリプロセッサの文を逆コンパイルする
- 15. mingw gccコンパイルとgdbデバッグ
- 16. 1つのタスクの出力をもう1つの入力として使用
- 17. はGCCでクラスをコンパイル
- 18. GCCでPARDISOリニアソルバテストケースをコンパイル
- 19. gccでコンパイル中のバスエラー
- 20. バッチモードでコマンドの間隔ごとに1行に再フォーマット出力
- 21. GCC詳細出力の出力の説明
- 22. gccコンパイルの問題
- 23. wevtutilクエリを1行に出力する
- 24. 1回の呼び出しで複数のSQL文を実行
- 25. 1秒に1回、2回に1回コードを実行できますか?
- 26. Windowsの下でlinux gccコンパイルされたプログラムを実行する
- 27. はSTDをコンパイル:: gccの
- 28. sqlite3の出力を1行のコマンドでタブで表示
- 29. GCC定数関数の入力のコンパイル時のチェック
- 30. クラスごとに1回、グループに1回実行する
これは完全に機能します!ありがとうございました! – alesko
@aleskoようこそ。 – ouah
私のgccベースのコンパイラは '.s'ファイルのみを保存します – Adrian