linux入门到精通-第四章-gcc编译器

目录

参考

gcc编译器

gcc概述

编辑器vi、记事本)是指我用它来写程序的 (编辑码),而我们写的代码语句,电脑是不懂的,我们需要把它转成电脑能懂的语句,编译器就是这样的转化工具。就是说,我们用编辑器编写程序,由编译器编译后才可以运行!

编译器是将易于编写、阅读和维护的高级计算机语言翻译为计算机能解读、运行的低级机器语言的程序。

gcc (GNU Compiler Collection,GNU 编译器套件是由 GNU 开发的编程语言编译器。gcc原本作为GNU操作系统的官方编译器,现已被大多数类Unix操作系统(如linux、BSD、Mac等)采纳为标准的编译器同样适用于微软的Windows。

gcc最初用于编译C语言,随着项目的发展gcc已经成为了能够编译C、C++、Java、Ada、fortran、Object C、ObjectC++、Go语言的编译器大家族。

编译命令格式:
gcc options file...
g++ options file...

  • 命令、选项和源文件之间使用空格分隔
  • 一行命令中可以有零个、一个或多个选项
  • 文件名可以包含文件的绝对路径,也可以使用相对路径
  • 如果命令不包含输出可执行文件的文件名,可执行文件的文件名会自动生成一个默认名,Linux平台为a.out,widnow平台为a.exe

gcc是外部命令

gcc的工作流程

gcc编译器从拿到一个c源文件到生成一个可执行程序,中间一共经历了四个步骤:

四个步骤并不是gcc独立完成的,而是在内部调用其他工具,从而完成了整个工作流程:

bash 复制代码
# 1、进行预处理
gcc -E hello.c -o hello.i
# 2、生成汇编文件
gcc -S hello.i -o hellp.s
# 3、生成目标代码
gcc -c hello.s -o hello.o
# 4、生成可执行文件
gcc hello.o -o hello
# 5、执行
./hello

也可以一步编译完成

bash 复制代码
# 将源文件生成一个可执行文件,等价于前面四步
gcc hello.c -o hello
# 执行
./hello
选项 作用
-o file 指定生成的输出文件名为file
-E 只进行预处理
-S(大写) 只进行预处理和编译
-c(小写) 只进行预处理、编译和汇编
-v/--version 查看gcc版本号
-g 包含调试信息
-On n=0~3 编译优化,n越大优化得越多
-Wall 提示更多警告信息
-D 编译时定义宏
bash 复制代码
# 显示所有的警告信息
gcc -Wall test.c
# 将警告信息当做错误处理
gcc -Wall -Werror test.c

-D定义宏用法

测试程序(-D选项)

c 复制代码
#include <stdio.h>1

int main(void)
{
	printf("SIZE: %d n",SIZE);
	return 0;
}

执行

bash 复制代码
deng@itcast:-/test$ gcc 2test.c -DSIZE=10
deng@itcast:-/test$ ./a.out
SIZE: 10
相关推荐
程序员小崔日记41 分钟前
20块钱注册一年 .COM 域名!Spaceship 最新优惠教程,支付宝即可付款(附优惠码)
服务器·腾讯云·域名
Better Bench1 小时前
WSL2 Ubuntu 中 Claude CLI “command not found” 故障排查与修复
linux·ubuntu·claude·wsl·claudecode
实心儿儿2 小时前
Linux —— 进程间关系和守护进程
linux·运维·服务器
FII工业富联科技服务2 小时前
工业设备运维如何Agentic化?拆解Factory Brain的设备运维架构
大数据·运维·人工智能·架构·制造
林浅不想努力2 小时前
LVS知识点总结
服务器·云原生·lvs
Dawn-bit3 小时前
Linux磁盘管理详解
linux·运维·服务器·计算机网络·云计算
RisunJan4 小时前
Linux命令-sftp(SSH 文件传输协议客户端)
linux·运维
极客先躯5 小时前
高级java每日一道面试题-2026年05月03日-实战篇[Docker]-如何实现容器化环境的数据加密?
java·运维·docker·容器·金融·加解密·高级面试
龙仔7256 小时前
人大金仓OS_Core数据库自动备份实施笔记(银河麒麟Linux)
linux·数据库·笔记·备份·人大金仓
老杨聊技术6 小时前
CentOS 7 安装 MySQL 8 保姆级教程
linux·mysql·centos