《Linux开发笔记》C语言编译

C语言编译过程

编译过程主要分为四步:预处理、编译、汇编、链接

预处理:主要用于查找头文件、展开宏

编译:把.i文件编译成.s文件

汇编:把.s文件汇编为.o文件

链接:把多个.o文件链接成一个app

以上四个步骤主要由3个命令实现,cll、as、collect2,这三个命令由一个命令触发:gcc -o hello hello.c

查看具体的编译步骤,可加参数-v查看

gcc代码选项

在使用gcc命令时可以通过添加选项实现多种功能

库分为静态库(a文件)和动态库(so文件),其中静态库表示将主函数和库打包在一起,会比较大,而动态库只是告诉主函数库在哪里,不进行一起打包,会比较小。

静态库:ar crs libsub.a sub.o

动态库:gcc -shared -o libsub.so sub.o

相关推荐
小当家.1055 分钟前
MCP 协议深度解析:AI 领域的 USB-C 接口
开发语言·人工智能·agent·tool·mcp
3A Cloud11 分钟前
Architecture Diagram Skill 详细介绍
人工智能·笔记·信息可视化
accept 99%15 分钟前
python版提取 PDF 的常用第三方库与工具
开发语言·python·pdf
lzhdim16 分钟前
C# 通过 Windows API 实现进程内存读写操作
开发语言·windows·c#
-银雾鸢尾-23 分钟前
C#中的预处理指令
开发语言·c#
Livia要学习29 分钟前
Python面向对象三大特性:封装、继承、多态
开发语言·python
dalong1034 分钟前
Savitzky-Golay 的C# 实现
开发语言·kotlin·c#
十月的皮皮44 分钟前
STM32从零到量产开发:四路继电器工业控制模块开发 -上位机 Program.cs 应用程序入口设计说明
c语言·stm32·单片机·stm32cubemx·hal库
疯狂打码的少年1 小时前
【数据结构】栈:定义、顺序栈与链式栈
数据结构·笔记
坚持编程的菜鸟1 小时前
模拟实现memcpy
c语言·算法·模拟实现my_memcpy