gcc工具制作静态库和动态库

本文详细介绍了GCC编译器的工作流程,包括预处理、编译、汇编及链接阶段,并深入探讨了静态库与动态库的区别及其制作方法。

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

学习目标:

掌握gcc编译器编译过程
掌握静态库和动态库的制作

学习内容:

gcc编译器编译过程
库文件
静态库和动态库
静态库和动态库的制作

学习时间:

周四

学习产出:

优快云 技术博客 31篇

gcc编译器编译过程

预处理:处理所有以#开头的代码,包括头文件、宏定义、条件编译
gcc -E hello.c -o hello.i
#include 头文件展开
#define 宏定义替换
#if 条件编译 如果不满足 代码丢掉

编译:语法检查以及将C语言变成汇编语言
gcc -S hello.i -o hello.s

汇编:将汇编语言变成二进制文件
gcc -c hello.s -o hello.o

链接:链接代码需要用到的其他文件(库文件等)
gcc hello.o -o hello

动态库和静态库

库文件
库文件(存放在lib文件夹中):存放函数和变量的仓库。
特点:只能使用库里的函数和变量,不能看到其实现。

静态库(通常以.a结尾):当使用静态库时,库里的函数和变量是在编译时加载到可执行文件。
动态库(通常以.so结尾):当使用动态库时,库里的函数和变量是在运行时加载到可执行文件的。

优缺点: 1、可执行文件大小:静态库>动态库(指内存使用效率)
2、可执行文件速度:静态库>动态库(指运行效率)
3、可执行文件的升级:动态库>静态库(指功能升级的难易程度)
4、可执行文件的代码部署:静态库>动态库(指代码部署的位置)
“文件名”:这类文件是在目前目录下寻找,找不到再依次寻找。
<文件>:这类文件在lib库寻找 库文件的存放路径:/lib/usr/lib

如何制作静态库和动态库

在这里插入图片描述
静态库
gcc -c 源文件 xx.o 生成二进制文件
gcc rcs 库文件名字 目标文件 静态库
gcc 源文件 -/库名 -L库的路径

在这里插入图片描述
动态库
gcc -shared -fPIC源文件 -o库名
gcc 源文件 ./库名 -o 可执行文件

在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值