gcc/g ++/clang/clang ++を使用して、オブジェクトファイルとソースファイルの両方を一度に作成することはできますか?どうやって?gcc/clangを使ってアセンブリファイルとオブジェクトファイルの両方を生成します:可能ですか?どうやって?
私は他の多くのオプションを渡す必要があるので、私は2つの別々のコマンドでそれらの重複を避けたい:
gcc -S test.cC# produce assembly
gcc -c test.cC# produce object file
gcc/g ++/clang/clang ++を使用して、オブジェクトファイルとソースファイルの両方を一度に作成することはできますか?どうやって?gcc/clangを使ってアセンブリファイルとオブジェクトファイルの両方を生成します:可能ですか?どうやって?
私は他の多くのオプションを渡す必要があるので、私は2つの別々のコマンドでそれらの重複を避けたい:
gcc -S test.cC# produce assembly
gcc -c test.cC# produce object file
あなたが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
それは 'ようですが打ち鳴らす-cちょうど'打ち鳴らすとは異なるアセンブラを使用していますtest.cc' --save-tempsを-S'または 'clang -c'です。そしてそのアセンブラは、clangに追加された機能に関するエラーメッセージを出します... 'clang -S'も' clang -c'もそのエラーを生成しません。だから私は自分の変更が間違っているか、環境にいくつかの調整が必要かどうかわからない。私はWindows上で、ARM-Linuxにクロスコンパイルしています。 –