Linux--gcc的基本用法

1.四个过程

在这里插入图片描述

预处理(pre-processing) E
编译器将C源代码中的包含的头文件如stdio.h编译进来,替换宏。
编译(Compiling)S
gcc首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,gcc把代码翻译成汇编语言。
汇编(Assembling) c
把编译阶段生成的”.s”文件转成二进制目标代码。
链接 (Linking)
链接到库中,生成可执行文件。
在这里插入图片描述

2.一次性完成

在这里插入图片描述

二、gcc常用选项

选项名作用
E激活预处理;头文件、宏等展开(.i文件)
S激活预处理、编译;生成汇编代码(.s文件)
c激活预处理、编译、汇编;生成目标文件(.o文件)
o生成目标
Wall打开编译告警(所有)
g嵌入调试信息,方便gdb调试
llib链接 lib 库 (这里是小写 L ) 相当于 C++ #pragma comment(lib, “xxx.lib”)
Idir增加 include 目录 (这里是大写 i ) 头文件路径
LDir增加 lib 目录 (编译静态库和动态库)

三、多模块编译

在这里插入图片描述
多模块编译中如果某一个模块发生了变化,只需要编译更改的模块即可

四、静态库与动态库

1.静态库(.a)

程序在编译链接时候把库的代码链接到可执行文件中。程序运行时候,不再需要静态库,生成的可执行文件大,每个可执行文件都会加载一份拷贝到内存。

gcc编译步骤:

(1)预处理

gcc –E xxxxx.c -o xxxxx.i
展开头文件
删除注释

(2)编译

gcc -> cc1
gcc –S xxxx.c –o xxxx.s
将C源代码编译为汇编语言

(3)汇编

gcc -> as
gcc –c xxxxx.c -o xxxxxx.o
将汇编文件汇编为二进制文件

(4)链接

gcc -> collect2
gcc xxxxx.c -> a.out
将多个二进制文件进行链接
改变二进制文件显示 == :%!xxd==
回到普通模式状态: == :%!xxd -r==

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值