《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

相关推荐
绍磊leo6 分钟前
Go 实现类似 FastAPI 的后端服务:从入门到实战
开发语言·golang
一条泥憨鱼7 分钟前
Java网络编程:Socket通信从入门到起飞
java·开发语言·网络·网络编程
hope_wisdom8 分钟前
C/C++数据结构之二叉树基础
c语言·数据结构·c++·二叉树
磊 子8 分钟前
STL算法库讲解1
开发语言·c++·算法
Hiter_John8 分钟前
Golang的条件判断
服务器·开发语言·golang
27669582929 分钟前
谷歌google cookie逆向角度分析
开发语言·python·google·sgss·谷歌搜索·sg-ss·谷歌cookie逆向
05候补工程师9 分钟前
【期末/408冲刺】软件工程核心考点与大题通关秘籍(附图解与解题套路)
大数据·hadoop·经验分享·笔记·软件工程
超人不会飞_Jay13 分钟前
2026.6.4 Vue用户中心项目笔记
前端·vue.js·笔记
中屹指纹浏览器16 分钟前
2026WebGL2着色器浮点精度与帧缓存像素指纹溯源及内核渲染层差异化改造详解
经验分享·笔记
时寒的笔记16 分钟前
瑞数案例欧冶解读py和js文件最终版
开发语言·javascript·ecmascript