《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

相关推荐
wjs20249 分钟前
CentOS Docker 安装
开发语言
澜世34 分钟前
2024小迪安全基础入门第七课
网络·笔记·安全·网络安全
阿熊不会编程37 分钟前
【计网】自定义协议与序列化(一) —— Socket封装于服务器端改写
linux·开发语言·网络·c++·设计模式
小牛itbull38 分钟前
Mono Repository方案与ReactPress的PNPM实践
开发语言·前端·javascript·reactpress
weixin_4786897643 分钟前
【二叉树】【2.1遍历二叉树】【刷题笔记】【灵神题单】
笔记
wzx_Eleven1 小时前
【课堂笔记】隐私计算实训营第四期:“隐语”可信隐私计算开源框架
笔记
jokerest1231 小时前
pwn——test_your_nc1——测试
开发语言·php
碧海蓝天20221 小时前
接上一主题,C++14中如何设计类似于std::any,使集合在C++中与Python一样支持任意数据?
开发语言·c++·python
醉颜凉1 小时前
计算(a+b)/c的值
java·c语言·数据结构·c++·算法
CQXXCL1 小时前
MySQL-学习笔记
笔记·学习·mysql