《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

相关推荐
leaves falling17 分钟前
C/C++ 的内存管理,函数栈帧详讲
java·c语言·c++
文静小土豆21 分钟前
Java 应用上 K8s 全指南:从部署到治理的生产级实践
java·开发语言·kubernetes
西西弗Sisyphus30 分钟前
Python 在终端里彩色打印
开发语言·python·print·彩色打印
浅念-1 小时前
从LeetCode入门位运算:常见技巧与实战题目全解析
数据结构·数据库·c++·笔记·算法·leetcode·牛客
Rsun045511 小时前
3、Java 工厂方法模式从入门到实战
java·开发语言·工厂方法模式
wjs20241 小时前
C++ 基本的输入输出
开发语言
talen_hx2961 小时前
《零基础入门Spark》学习笔记 Day 16
笔记·学习·spark
kobesdu1 小时前
【ROS2实战笔记-3】RViz2图形底层与调试暗坑
笔记·机器人·ros·rviz
码云数智-园园1 小时前
Python的GIL锁如何影响多线程性能?有哪些替代方案?
开发语言
咬_咬1 小时前
go语言学习(map)
开发语言·学习·golang·map