《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

相关推荐
所愿ღ1 小时前
JavaWeb-Servlet基础
笔记·servlet
岑梓铭2 小时前
考研408《计算机组成原理》复习笔记,第五章(2)——CPU指令执行过程
笔记·考研·408·计算机组成原理·计组
七七&5563 小时前
2024年08月13日 Go生态洞察:Go 1.23 发布与全面深度解读
开发语言·网络·golang
java坤坤3 小时前
GoLand 项目从 0 到 1:第八天 ——GORM 命名策略陷阱与 Go 项目启动慢问题攻坚
开发语言·后端·golang
元清加油3 小时前
【Golang】:函数和包
服务器·开发语言·网络·后端·网络协议·golang
健康平安的活着4 小时前
java之 junit4单元测试Mockito的使用
java·开发语言·单元测试
No0d1es4 小时前
电子学会青少年软件编程(C/C++)5级等级考试真题试卷(2024年6月)
c语言·c++·算法·青少年编程·电子学会·五级
DjangoJason5 小时前
C++ 仿RabbitMQ实现消息队列项目
开发语言·c++·rabbitmq
oe10196 小时前
读From GPT-2 to gpt-oss: Analyzing the Architectural Advances(续)
笔记·gpt·学习
m0_480502646 小时前
Rust 入门 KV存储HashMap (十七)
java·开发语言·rust