GCC编译流程及参数分析、动态静态库的使用

本文详细介绍了GCC编译器的工作流程,包括预处理、编译、汇编和链接四个阶段,并提供了实例演示。此外,文章还深入探讨了静态库和动态库的创建、使用及其优缺点。通过实例,读者将学会如何编译链接静态库libfun.a和动态库libfun.so。
摘要由CSDN通过智能技术生成

目录

一、gcc编译器

1.1、gcc工作流程

1.2、GCC编译流程分析

 1.3、GCC处理过程中的文件后缀名分析

1.4、示例

二、静态库编写与调用

2.1、静态库的命名与创建格式

2.2、静态库作用分析

2.3、静态库的创建与使用

1、编写静态库源码fun.c

2、给库源码fun.c编写头文件fun.h

3.编译为静态库

4、编写测试程序test.c

5、编译test.c,并链接静态库libfun.a

三、动态库(共享库)

3.1、动态库的命名格式

3.2、动态库作用分析

3.3、动态库的制作与使用

1-2、编写动态库文件和头文件

3、编译为动态库

4、编写测试程序test.c

5、编译test.c,并链接动态库libfun.so


一、gcc编译器

1.1、gcc工作流程

预处理(pre-processing) E:插入头文件,替换宏,将stdio.h文件中的内容插入到hello.c中

编译(compliling) S:编译成汇编代码

汇编(Assembling) c:编译成目标文件

链接(Linking):链接到库中,变成可执行文件

1.2、GCC编译流程分析

编译阶段 源文件 命令参数 目标文件 示例 参数解释
预处理阶段 .c -E .i/.ii(C代码) gcc -E test.c -o test.i -Wall -E:使编译器在预处理结束时就停止编译
.C/.cc/.cxx -o:生成GCC的输出结果
.m -Wall:(预处理阶段不起作用)
编译阶段 .i -S .s/.S(汇编代码) gcc -S test.i -o test.s -Wall -S:使编译器在编译结束后就停止
.ii -Wall:编译时打印出所有警告
汇编阶段 .s/.S -c .o(二进制代码) gcc -c test.s -o test.o -Wall -c:无链接步骤,编译源码并最后生成目标文件
链接阶段 .o gcc test.o -o test.out
.a/.so

其他常用参数:

参数 用途
-v 查看版本
-o 产生目标文件
-I+目录 指定头文件目录
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Like_ai

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值