2016-09-07 8 views
2

gcc/g ++/clang/clang ++を使用して、オブジェクトファイルとソースファイルの両方を一度に作成することはできますか?どうやって?gcc/clangを使ってアセンブリファイルとオブジェクトファイルの両方を生成します:可能ですか?どうやって?

私は他の多くのオプションを渡す必要があるので、私は2つの別々のコマンドでそれらの重複を避けたい:

gcc -S test.cC# produce assembly 
gcc -c test.cC# produce object file 

答えて

0

あなたがgccのに-save-tempsオプションを与えることができます:それはすべての一時ファイルを残します(.sファイルを含む)、現在のディレクトリ(clangでも動作します)で:

gcc -c --save-temps test.cc 

または-Wa,-aln=test.sオプションを使用します。

gccドキュメントから
gcc -c -Wa,-aln=test.s test.c 

:アセンブラへのオプションとして

-Wa,option

パスoption。オプションにコンマが含まれている場合、コンマで複数のオプションに分割されます。

  • -alはアセンブリ
  • オミットフォーム処理
を含める:任意の様々な方法でリスト上の

-a[cdghlmns]電源を入れ、:asドキュメントから

[...]

これらのオプションは組み合わせて使用​​できます。たとえば、フォーム処理を行わずにアセンブリリストには-alnを使用します。

クランをオフにする必要があり、統合アセンブラ(How to switch off LLVM's integrated assembler?)があります。

clang++ -c -no-integrated-as -Wa,-aln=test.s test.c 
+0

それは 'ようですが打ち鳴らす-cちょうど'打ち鳴らすとは異なるアセンブラを使用していますtest.cc' --save-tempsを-S'または 'clang -c'です。そしてそのアセンブラは、clangに追加された機能に関するエラーメッセージを出します... 'clang -S'も' clang -c'もそのエラーを生成しません。だから私は自分の変更が間違っているか、環境にいくつかの調整が必要かどうかわからない。私はWindows上で、ARM-Linuxにクロスコンパイルしています。 –

関連する問題