Linux训练营(gcc编译器)

news/2024/10/17 22:21:10/

文章目录

  • 前言
  • 一、gcc编译器介绍
  • 二、gcc编译器选项讲解
  • 三、gcc编译C程序
  • 总结


前言

本篇文章我们来讲解gcc编译器,gcc编译器在Linux中是用来将从代码编译为可执行程序。为了更加深入了解程序编译生成的过程我们有必要来学习gcc的相关知识。

一、gcc编译器介绍

GCC(GNU Compiler Collection)是一款广泛使用的开源编译器套件,由GNU项目开发。它支持多种编程语言,如C、C++、Objective-C、Fortran、Ada和其他开发语言。
下面是GCC编译器的一些主要特点和使用方式的讲解:

1.跨平台性:GCC是一个跨平台编译器,可在多个操作系统上使用,包括Linux、macOS和Windows等。GCC的主要目标是提供一个可移植的编译器解决方案。

2.支持多种编程语言:GCC支持多种编程语言,包括C、C++、Objective-C、Fortran、Ada和其他开发语言。每种语言都有对应的前端程序,用于将源代码转换为GCC的中间表示形式。

3.多阶段编译过程:GCC采用多阶段编译过程,将源代码转换为可执行的机器代码。编译过程包括预处理、编译、汇编和链接等阶段。预处理器处理预处理指令,编译器将源代码转换为汇编代码,汇编器将汇编代码转换为可重定位目标文件,链接器将目标文件和库文件链接为最终的可执行文件。

4.丰富的优化功能:GCC提供了强大的优化功能,用于提高生成的机器代码的性能和效率。优化功能包括指令选择、寄存器分配、常量传播、代码消除等,可以根据需要进行配置。

5.支持多种编译选项:GCC提供了许多编译选项,用于控制编译过程和生成的代码的行为。例如,您可以指定编译器优化级别、输出警告信息、生成调试符号、链接外部库等。

6.广泛的应用:GCC是许多开源项目的首选编译器,被广泛用于系统软件、应用程序、嵌入式系统和其他领域的开发。它也是许多操作系统的默认编译器。

7.工具链支持:GCC还提供了与其他工具链集成的支持,例如GNU调试器(GDB)和GNU构建系统(GNU Build System)。

要使用GCC编译器进行编译,通常需要在终端中运行以下命令:

gcc [options] source_files -o output_file

其中,[options]是可选的编译选项,source_files是要编译的源代码文件,-o output_file指定生成的可执行文件名。
GCC编译器有许多其他选项和功能,您可以查看相关文档或使用man gcc命令来获取更详细的信息。

二、gcc编译器选项讲解

GCC编译器具有丰富的选项,用于控制编译过程和生成的代码的行为。下面是一些常用的GCC选项的说明:

1.优化选项(-O):GCC提供了不同级别的优化选项,用于提高生成的机器代码的性能和效率。以下是常用的优化选项:

-O0:关闭优化,默认级别,生成易于调试的代码。
-O1:启用基本优化,包括一些常见的优化,但不会显著影响编译时间。
-O2:启用更多优化选项,通常用于生产环境,提高代码性能。
-O3:启用更高级别的优化选项,可能会增加编译时间,但对代码性能提升较大。

2.警告选项(-W):GCC提供了多种警告选项,用于检测代码中的潜在问题和不良习惯。以下是一些常用的警告选项:

-Wall:启用常见的警告选项。
-Wextra:启用更多附加的警告选项。
-Werror:将警告视为错误,并停止编译过程。
-Wno-*warning:禁用特定警告,例如 -Wno-unused-variable 禁用未使用变量的警告。

3.调试选项(-g):GCC支持生成调试信息以用于调试程序。使用-g选项编译程序时,会在生成的可执行文件中包含调试符号,以便在调试器中进行源代码级别的调试。

目标文件输出选项(-o):使用-o选项指定生成的可执行文件或目标文件的名称。例如:gcc source.c -o executable 将编译源代码文件source.c,并输出为executable可执行文件。

包含目录选项(-I):使用-I选项指定包含头文件的目录。例如:gcc -I /path/to/include source.c 将在/path/to/include目录中查找头文件。

库文件选项(-l, -L):使用-l选项指定要链接的库文件,使用-L选项指定库文件的搜索路径。例如:gcc source.c -L /path/to/libs -l mylib 将链接名为libmylib.so的库文件。

预处理选项(-E):使用-E选项进行预处理。预处理选项可用于将源代码预处理后的结果输出到屏幕或文件,而不进行实际的编译、汇编和链接。

这只是GCC选项的一小部分,还有许多其他选项可用于特定的编译需求和目标平台。您可以查看GNU GCC文档或使用man gcc命令来获取完整的选项列表和详细的说明。

请注意,使用选项时,请确保正确理解其功能和影响,并根据实际需求进行选择和配置

三、gcc编译C程序

当使用GCC编译C程序时,可以按照以下步骤进行操作:

1.创建C源代码文件:首先,创建一个扩展名为.c的C源代码文件。例如,您可以使用文本编辑器创建一个名为hello.c的文件,并在其中编写C程序的代码。

2.编写C程序代码:在C源代码文件中编写您的C程序。例如,您可以在hello.c文件中编写一个简单的C程序,示例代码如下所示:

#include <stdio.h>int main() {printf("Hello, world!\n");return 0;
}

3.打开终端或命令提示符:打开终端应用程序(Linux/macOS)或命令提示符(Windows)。

4.切换到源代码文件所在的目录:使用命令cd切换到包含C源代码文件的目录。例如,如果您的hello.c文件在/path/to/source目录中,可以运行以下命令:

cd /path/to/source

5.使用GCC编译源代码文件:在终端或命令提示符中,运行以下命令使用GCC编译您的C源代码文件:

gcc hello.c -o hello

上述命令将使用GCC编译hello.c文件,并将生成的可执行文件命名为hello(使用-o选项)。如果没有错误或警告信息,将生成一个名为hello的可执行文件。

6.运行可执行文件:编译成功后,您可以通过在终端或命令提示符中输入可执行文件的名称来运行程序。例如,运行以下命令来执行hello可执行文件:

./hello

执行上述命令后,将在终端或命令提示符中显示"Hello, world!"的输出。

总结

本篇文章就讲解到这里,大家可以在


http://www.ppmy.cn/news/714191.html

相关文章

UE4 尝试分配纹理时 显卡内存分配不足

在使用ue4开两个客户端组排的时候经常会遇到尝试分配纹理内存不足&#xff0c;ue 4 直接崩溃。搜了网上无非一个解决方案-------取消自动分配虚拟内存。同事帮助下得到了另一个行之有效的解决方法 现将这两个方法总结如下。 1 .windows系统下将自动分配虚拟内存关闭&#xff…

ubuntu释放显卡内存

在服务器上跑深度学习代码时&#xff0c;构造了一个&#xff08;256,100,100&#xff09;的张量&#xff0c;但显示 Resource exhausted: OOM when allocating tensor with shape[600] and type float on /job:localhost/replica:0/task:0/device:GPU:0 by allocator GPU_0_bf…

C# 获取显卡信息和内存信息

获取内存信息 public static class PerformanceInfo{[DllImport("psapi.dll", SetLastError true)][return: MarshalAs(UnmanagedType.Bool)]public static extern bool GetPerformanceInfo([Out] out PerformanceInformation PerformanceInformation, [In] int Si…

linux服务器显卡的占用量,命令查看Linux服务器内存、CPU、显卡使用情况

查看内存使用情况 使用命令&#xff1a;free -m 大致结果类似下图&#xff1a; 参数解释&#xff1a; Mem行(单位均为M)&#xff1a; * total&#xff1a;内存总数 * used&#xff1a;已使用内存数 * free&#xff1a;空闲内存数 * shared&#xff1a;当前废弃不用 * buffers&a…

关于深度学习神经网络模型训练,参数过大,导致显卡内存溢出问题的总结

实验是利用CIFAR10模型,计算将图片分成10个分类的误差。一开始采用cpu模型来训练,迭代一个epoch需要50分钟,所以换成GPU模型,GPU有4G内存,结果刚加载模型显卡内存就溢出。 报错如下: 先用keras来计算网络的大小,参数的个数。 (50000, 32, 32, 3) (50000,) (10000, 32, …

显卡 内存分配 linux,【原创】Linux环境下的图形系统和AMD R600显卡编程(4)——AMD显卡显存管理机制...

显卡使用的内存分为两部分,一部分是显卡自带的显存称为VRAM内存,另外一部分是系统主存称为GTT内存(graphics translation table和后面的GART含义相同,都是指显卡的页表,GTT 内存可以就理解为需要建立GPU页表的显存)。在嵌入式系统或者集成显卡上,显卡通常是不自带显存的,…

win10弹出计算机的内存不足,win10提示计算机显卡内存不足情况的解决办法介绍...

近日&#xff0c;有网友反映&#xff0c;windows10系统在内存充足的情况下&#xff0c;出现提示计算机的内存不足的对话框现象&#xff0c;那么&#xff0c;提示win10计算机内存不足是什么原因&#xff1f;如何解决&#xff1f;针对此问题&#xff0c;本文就为大家进行解答。有…

计算机运行内存和显卡内存不足,电脑内存不足的解决办法 win10提示计算机显卡内存不足情况的解决办法介绍 我这个...

延伸:win10提示计算机显卡内存不足情况的解决办法介绍 我这个配置玩坦克世界提示内存 描述:近日,有网友反映,windows10系统在内存充足的情况下,出现提示计算机的内存不足的对话框现象,那么,提示win10计算机内存不足是什么原因?如何解决?针对此问题,本文就为大家进行解…