linux.gnu,Linux下GNU编译器

本文介绍了程序员在购买机械键盘时红轴和茶轴的选择,以及GNU编译器的工作流程。从预处理、编译、汇编到链接的四个步骤详细解释了C代码如何变为可执行文件。同时,提到了gcc-v查看编译器版本、头文件的使用和预处理指令,以及头文件在编程中的作用。还讨论了环境变量的配置和vim编辑器的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

66b52468c121889b900d4956032f1009.png

8种机械键盘轴体对比

本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?

GNU编译器

a598df68f30df0628e84f13efc4b441c.png1、支持众多编程语言、平台

2、构建过程(C代码是如何变成可执行文件的)。

第一步,预处理. 这一步处理 头文件、条件编译指令和宏定义。

第二步,编译. 将第一步产生的文件连同其他源文件一起编译成汇编代码。

第三步,汇编。将第二步产生的汇编源码转换为 object file.

第四步,链接. 将第三步产生的一些object file 链接成一个可执行的文件。

预处理:把程序员所编译的C代码翻译成标准的C代码

汇编:把预处理后的C代码翻译成汇编代码

编译:把会标代码翻译成二进制指令

链接:把若干个目标文件合并成一个可执行文件

3、gcc -v 查看版本

4、文件后缀

.h 头文件

.gch 头文件的编译结果,一般不要保留。

.c 源文件

.i 预处理文件

.s 汇编文件

.o 目标文件

.a 静态库文件

.so 共享库文件

5、参数

-E 预处理

-S 汇编

-c 编译(只生成目标文件)

-o 指定编译结果的名字

-Wall 产生尽可能多的警告

-Werror 把警告当作错误处理

-x 指定编译的语言

-g 生成调试信息

-On 优化等级

-D 编译时定义宏

-l 链接里加库

-I 指定头文件的查找路径,配置环境变量

1、打开 vim ~/.bashrc

2、在文件末尾,添加一行 export C_INCLUDE_PATH=$C_INCLUDE_PATH:NEW_PATH

3、重新加载配置文件 source ~/.bashrc

注意:如果要删除环境变量需要在~/.bashrc文件中删除环境变量后,退出终端重新打开。

考题1:#include <> / #include "" 区别?

考题2:头文件中可以编写哪些内容?

考题3:头文件的作用?

1、说明对应的.c文件的内容有哪些(声明函数、全局变量)。

2、定义结构、联合、枚举、宏

3、类型重定义

虽然函数可以隐式声明,但并不一定准确,而且非常有可能造成严重错误。

6、预处理指令

#include 文件包含,区别""和<>的区别

#define 定义宏常量或宏函数

# 把标识符转换成字符串

## 合并标识符

#undef 删除宏

#line 指定当前行的行号

#if 条件编译

#ifndef 常用于头文件卫士

#ifdef

#elif

#endif

#error 在编译期间产生错误

#warning 在编译期间产生警告

#pragma

#pragma GCC dependency "文件" 用于监控文件,防止所依赖的文件,修改后而不知道

#pragma GCC poison 标识符 用于禁用某些标识符

#pragma pack(n) 设置结构、联合的补齐和对齐字节数

n的值必须比默认的要小

对齐边界必须是2的较小次方

b7e655abbec7a759389ed22622f12d89.png

a712459b6e0cb534bd07ae6fe61145db.png

4e59f74c46b2c0d802a3e6c21d8e3e92.png

83c734158d50afd4d0e5746398db5ebb.png

77ee00d0cf3d85355304a82f96e3279b.png

思考:

头文件的作用是什么?

编译时头文件找不到怎么办?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值