gccのインストールと使用
1.機能
GCC は Linux 上で設定されるコンパイル ツールであり、GNU Compiler Collection の略称で、gcc、g++ およびその他のコンパイラが含まれます。このツールセットにはコンパイラだけでなく、ar、nm などの他のツールセットも含まれています。GCC は、ソース ファイルをコンパイルするだけでなく、静的および動的ライブラリを作成するためにも使用できます。
GCC ツールセットは C/C++ 言語をコンパイルできるだけでなく、Objective-C、Pascal、Fortran、Java、Ada などの他の言語もコンパイルできます。GCC は、さまざまなハードウェア プラットフォームに従ってコンパイルできます。つまり、クロス コンパイルを実行したり、プラットフォーム A 上でプラットフォーム B のプログラムをコンパイルしたり、一般的な X86、ARM、PowerPC、mips など、および Linux などのソフトウェア プラットフォームをサポートしたりできます。そしてWindows。
2、gccをインストールする
Linux の一部の純粋なバージョンにはデフォルトで gcc コンパイラーが含まれていないため、自分でインストールする必要があります。オンライン インストールの手順は次のとおりです。
# 安装软件必须要有管理员权限
# ubuntu
$ sudo apt update # 更新本地的软件下载列表, 得到最新的下载地址
$ sudo apt install gcc g++ # 通过下载列表中提供的地址下载安装包, 并安装
# centos
$ sudo yum update # 更新本地的软件下载列表, 得到最新的下载地址
$ sudo yum install gcc g++ # 通过下载列表中提供的地址下载安装包, 并安装
gcc がインストールされたら、バージョンを表示できます。
# 查看 gcc 版本
$ gcc -v
$ gcc --version
# 查看 g++ 版本
$ g++ -v
$ g++ --version
3.GCC ワークフロー
GCC コンパイラによるプログラムのコンパイルは下図に示されており、前処理 (プリコンパイル)、コンパイルと最適化、アセンブルとリンクの 4 つの段階に分かれています。GCC のコンパイラは、これら 4 つのステップを 1 つに結合できます。(Gcc は .c ファイルのコンパイルに使用され、g++ は .cpp 形式の C++ ソース ファイルのコンパイルに使用されます)
1. 预处理:在这个阶段主要做了三件事: 展开头文件 、宏替换 、去掉注释行
这个阶段需要 GCC 调用预处理器来完成,最终得到的还是源文件,文本格式
2. 编译:这个阶段需要 GCC 调用编译器对文件进行编译,最终得到一个汇编文件
3. 汇编:这个阶段需要 GCC 调用汇编器对文件进行汇编,最终得到一个二进制文件
4. 链接:这个阶段需要 GCC 调用链接器对程序需要调用的库进行链接,最终得到一个可执行的二进制文件
ファイル名の接尾辞 | 説明する | gccパラメータ |
---|---|---|
.c | ソースファイル | なし |
。私 | 前処理された C ファイル | -E |
.s | コンパイル後に得られるアセンブリ言語のソースファイル | -S |
.o | アセンブリ後のバイナリ ファイル | -C |
Linux で GCC コンパイラを使用して単一のファイルをコンパイルするのは非常に簡単です。gcc コマンドを直接使用し、その後にコンパイルする C 言語ソース ファイルを指定すると、GCC は a.out という名前の実行可能ファイルを自動的に生成します (また、のパラメータ -o は、生成されるファイル名を指定します。)、つまり、上記の 4 つのステップはすべて簡単なコマンドで実行されます。しかし、ステップスルーしたい場合は問題ありません。一步完成上述操作的示例如下
:
// 假设程序对应的源文件名为 test.c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
int main()
{
int array[5] = {
1,2,3,4,5};
for(int i=0; i<5; ++i)
{
printf("array[%d] = %d\n", i, array[i]);
}
return 0;
}
この時点で、次のコマンドを使用できます。
gcc test.c -o test1 // -o可以不指定,则会生成一个a.out的可执行文件
この時点で、ディレクトリ内に test1 という名前の実行可能ファイル (緑色) が存在します。
4、gcc 共通パラメータ
次の表に、一般的に使用される gcc パラメータをいくつか示します。gcc コマンドでは引数に位置要件はありません、プログラムをコンパイルするときに必要なパラメータを指定するだけで済みます。
このうち、-I (大文字の i) はヘッダー ファイルの場所を指定します。パラメーターと指定された値の間にスペースを入れることはできません。
詳細なパラメーターの例については、「Linux コードのコンパイルと操作
5. gcc と g++」を参照してください。
区别:
1. 在代码编译阶段(第二个阶段):
- 后缀为 .c 的,gcc 把它当作是 C 程序,而 g++ 当作是 C++ 程序
- 后缀为.cpp 的,两者都会认为是 C++ 程序,C++ 的语法规则更加严谨一些
- g++ 会调用 gcc,对于 C++ 代码,两者是等价的,也就是说 gcc 和 g++ 都可以编译 C/C++ 代码
2. 在链接阶段(最后一个阶段):
- gcc 和 g++ 都可以自动链接到标准 C 库
- g++ 可以自动链接到标准 C++ 库,gcc 如果要链接到标准 C++ 库需要加参数 -lstdc++
3. 关于 __cplusplus 宏的定义
- g++ 会自动定义__cplusplus 宏,但是这个不影响它去编译 C 程序
- gcc 需要根据文件后缀判断是否需要定义 __cplusplus 宏 (规则参考第一条)
要約すると、
gcc と g++ は両方とも C プログラムをコンパイルでき、プログラムをコンパイルするルールとパラメーターは同じです。g++ は C++ プログラムを直接コンパイルでき、gcc は C++ プログラムをコンパイルします。C++ プログラムにはパラメータを追加する必要があります - lstdc++ gcc と g++ はどちらも __cplusplus マクロを定義できます。