わかりましたように、gccはコンパイル、アセンブル、リンクを実行します。後者の2つのステップは、as
とld
を実行することによって実現されます。
gcc -S test.c
を使用してアセンブリコードを生成できます。
アセンブリコードを実行可能ファイルに変換するには、何をターミナルに入力しますか?
(そうする理由は、アセンブリを学ぶことです)
わかりましたように、gccはコンパイル、アセンブル、リンクを実行します。後者の2つのステップは、as
とld
を実行することによって実現されます。
gcc -S test.c
を使用してアセンブリコードを生成できます。
アセンブリコードを実行可能ファイルに変換するには、何をターミナルに入力しますか?
(そうする理由は、アセンブリを学ぶことです)
これらのオブジェクトに組み立て、あなたがまたは、コンパイルの四つの段階は、前処理(-E)にあるか分からないことがあり得るので、アセンブリに(-S)をコンパイルgccの
gcc -E --> Preprocessor, but don't compile
gcc -S --> Compile but don't assemble
gcc -c --> assemble but don't link
gcc with no switch will link your object files and generate the executable
GCCの現在のバージョンにはもう別のプリプロセッサがありません(上記のように前処理を依頼することもできます) – vonbrand
ニースの答えはあまりにも説明しすぎない – CristiFati
あなたはgcc -S -o test.s test.c
、タイプgcc -o test test.s
を実行した後。
gcc
は、いつでも編集処理を開始して停止できます。 gcc test.s -o test
はアセンブリからtest.s
を実行可能ファイルにコンパイルします。
を使用してさまざまな段階ですコード(-c)、最後にリンクします。把握するのが最も難しいのは、プリプロセッサの出力を使う方法でした。
gcc -E hello.c | gcc -S -xc -o hello.s -
gcc -c hello.s -o hello.o
gcc hello.o -o hello
実際には前処理を行い、次にコンパイルし、次にアセンブルしてからリンクします。前処理は、特にブーストを使用する場合、プロセスの重要な部分である可能性があります。 –
'-v'パラメータを使用すると、GCCがサブプログラムをどのように呼び出すかを見ることができます。 'gcc -o test test.c -v' – mizo