GCC-Installation und Verwendung

GCC-Installation und Verwendung

1. Funktion

GCC ist ein Kompilierungstoolsatz unter Linux, die Abkürzung für GNU Compiler Collection, einschließlich gcc, g++ und anderen Compilern. Dieses Toolset umfasst nicht nur den Compiler, sondern auch andere Toolsets wie ar, nm usw. GCC kann nicht nur zum Kompilieren von Quelldateien, sondern auch zum Erstellen statischer und dynamischer Bibliotheken verwendet werden.

Mit dem GCC-Toolset kann nicht nur die Sprache C/C++ kompiliert werden, sondern auch andere Sprachen wie Objective-C, Pascal, Fortran, Java, Ada usw. können kompiliert werden. GCC kann nach verschiedenen Hardwareplattformen kompilieren, das heißt, es kann eine Kreuzkompilierung durchführen, Programme für Plattform B auf Plattform A kompilieren und gängige X86, ARM, PowerPC, Mips usw. sowie Softwareplattformen wie Linux unterstützen und Windows.

Zweitens: Installieren Sie gcc

Einige reine Linux-Versionen verfügen standardmäßig nicht über einen GCC-Compiler und Sie müssen ihn selbst installieren. Die Online-Installationsschritte lauten wie folgt:

# 安装软件必须要有管理员权限
# ubuntu
$ sudo apt update   		# 更新本地的软件下载列表, 得到最新的下载地址
$ sudo apt install gcc g++	# 通过下载列表中提供的地址下载安装包, 并安装

# centos
$ sudo yum update   		# 更新本地的软件下载列表, 得到最新的下载地址
$ sudo yum install gcc g++	# 通过下载列表中提供的地址下载安装包, 并安装

Nachdem gcc installiert wurde, können Sie die Version anzeigen:

# 查看 gcc 版本
$ gcc -v
$ gcc --version

# 查看 g++ 版本
$ g++ -v
$ g++ --version

3. GCC-Workflow

Die Kompilierung des Programms durch den GCC-Compiler ist in der folgenden Abbildung dargestellt. Sie ist in vier Phasen unterteilt: Vorverarbeitung (Vorkompilierung), Kompilierung und Optimierung, Assemblierung und Verknüpfung. Der Compiler von GCC kann diese vier Schritte in einem kombinieren. (Gcc wird zum Kompilieren von C-Dateien und g++ zum Kompilieren von C++-Quelldateien im CPP-Format verwendet.)

1. 预处理:在这个阶段主要做了三件事: 展开头文件 、宏替换 、去掉注释行
	这个阶段需要 GCC 调用预处理器来完成,最终得到的还是源文件,文本格式

2. 编译:这个阶段需要 GCC 调用编译器对文件进行编译,最终得到一个汇编文件

3. 汇编:这个阶段需要 GCC 调用汇编器对文件进行汇编,最终得到一个二进制文件

4. 链接:这个阶段需要 GCC 调用链接器对程序需要调用的库进行链接,最终得到一个可执行的二进制文件
Dateinamensuffix veranschaulichen gcc-Parameter
.C Quelldatei keiner
.ich Vorverarbeitete C-Datei -E
.S Die nach der Kompilierung erhaltene Quelldatei der Assemblersprache -S
Die resultierende Binärdatei nach der Assemblierung -C

Es ist sehr einfach, den GCC-Compiler zum Kompilieren einer einzelnen Datei unter Linux zu verwenden. Verwenden Sie direkt den Befehl gcc, gefolgt von der zu kompilierenden C-Sprachquelldatei, und GCC generiert automatisch eine ausführbare Datei mit dem Namen a.out (Sie können auch verwenden). DieDer Parameter -o gibt den generierten Dateinamen an), das heißt, die vier oben genannten Schritte werden alle über einen einfachen Befehl ausgeführt. Aber wenn Sie durchgehen möchten, ist das kein Problem. 一步完成上述操作的示例如下:

// 假设程序对应的源文件名为 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;
}

An dieser Stelle können Sie den Befehl verwenden:

gcc test.c -o test1 // -o可以不指定,则会生成一个a.out的可执行文件

Zu diesem Zeitpunkt befindet sich im Verzeichnis eine ausführbare Datei (grün) mit dem Namen test1.

Viertens: gemeinsame GCC-Parameter

In der folgenden Tabelle sind einige häufig verwendete GCC-Parameter aufgeführtFür das Argument ist im gcc-Befehl keine Position erforderlich, müssen Sie beim Kompilieren des Programms nur die erforderlichen Parameter angeben.
Fügen Sie hier eine Bildbeschreibung ein
Unter diesen gibt -I (Großbuchstabe i) den Speicherort der Header-Datei an. Zwischen dem Parameter und dem angegebenen Wert darf kein Leerzeichen stehen.
Ausführliche Parameterbeispiele finden Sie unter: Kompilierung und Betrieb von Linux-Code
5. gcc und 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 宏 (规则参考第一条)

Zusammenfassend lässt sich sagen, dass
sowohl gcc als auch g++ C-Programme kompilieren können und die Regeln und Parameter zum Kompilieren von Programmen dieselben sind. g++ kann C++-Programme direkt kompilieren, und gcc kompiliert C++-Programme, die zusätzliche Parameter hinzufügen müssen - lstdc++ Sowohl gcc als auch g++ können das __cplusplus-Makro definieren.

Supongo que te gusta

Origin blog.csdn.net/qq_39030233/article/details/128982517
Recomendado
Clasificación