GNU Compiler Collection、最初のステップ

この記事は、初心者のnix開発者に簡単な例、特にGCCコンパイラーを使用してGNUツールを紹介することを目的としています。





それを使用して、最も単純なプログラムを作成します。 概して、すべてが通常どおりです。 プロジェクトを配置する特別なフォルダーを作成します。

その中にhello.cという名前のファイルを作成します

任意のテキストエディターでファイルを開き、最も単純なコードを記述します。



#include <stdio.h>

int main(void)

{

printf("Hello world!");

return(0);

}








ファイルを保存し、コマンドを実行します: gcc hello.c







作成したフォルダに新しいファイルが表示されます-a.out、特に指定しない限り、この名前はデフォルトで割り当てられます。



これは実行可能ファイルです。 実行してみましょう。コンソールで次のように入力します: ./a.out







そして、Linuxで最初に書かれたプログラムに関連して喜んでください!



さらに進みます。 実行可能ファイルを実行するとき、その名前のみを指定すると、システムはディレクトリ/ usr / binおよび/ usr / local / binでそれを検索しますが、もちろんそれを見つけません。 それらの最初のものは、通常Linuxディストリビューションに含まれているプログラムの安定したバージョンをホストするように設計されています。 2つ目は、ユーザーがインストールしたプログラム用です(その安定性のため、誰も保証できません)。 デフォルトでは、プログラムをビルドすると、それらは/ usr / local / binディレクトリにインストールされます。



コンパイル中に使用されるフラグ



-oフラグは、結果の実行可能ファイルに特定の名前を指定するために使用されますgcc hello.c -o say_hello







-Eフラグを使用して、プリプロセッサが動作した後に何が起こるかを確認します。 このフラグは、プリプロセッサによる処理の段階で、プログラムの実行を停止します。 結果は、ヘッダーファイルの内容が含まれるソースコードファイルです。

プルアップ/ルック: gcc -E hello.c -o hello.cpp







-cフラグを使用してオブジェクトファイルを作成します(* .objに類似): gcc -c kalkul.c







結果のファイルの名前は同じですが、コンパイラは拡張子.c.oに変更します(ただし、手動で指定できます)。



既にプリプロセッサによって処理されたソース(たとえば、上記で受け取ったもの)からオブジェクトファイルを作成する場合は、 -xフラグを使用します。コンパイルされたファイルは、プリプロセッサによって処理され、プリプロセッサタグを持つソースファイルであることを明確に示す必要があります。 それ以外の場合、プリプロセッサタグを考慮せずに、通常のC ++ファイルのように処理されます。つまり、宣言された関数との通信は確立されません。



プリプロセッサによって処理されるC ++ファイルは、cpp-outputで示されます。

gcc -x cpp-output -c hello.cpp







プロジェクトは次のとおりですgcc hello.o -o say_hello





実行: ./say_hello



なぜ中間段階でこのような大騒ぎが必要なのですか?

プログラムが単一のファイルで構成されることはめったにありません。 原則として、いくつかのソースファイルがあり、それらはプロジェクトに結合されます。 また、いくつかの例外的なケースでは、プログラムはいくつかの部分で構成され、異なる言語で書かれている可能性があります。 この場合、異なる言語のコンパイラを実行して、それぞれがソースからオブジェクトファイルを受け取り、受け取ったオブジェクトファイルを実行可能プログラムに合成する必要があります。



All Articles