《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

相关推荐
2601_962070236 分钟前
差异基因富集分析(R语言——GO&KEGG&GSEA)
开发语言·golang·r语言
布莱克6058 分钟前
栈(Stack)详解:定义、作用、应用场景及与队列的区别(附 C/C++ 代码)
c语言·开发语言·c++·
打团从来人不齐9 分钟前
Linux服务器搭建笔记-008:台式机共享WIFI
linux·服务器·笔记
zmzb01039 分钟前
C++课后习题训练记录Day203
开发语言·c++
wuyk55510 分钟前
从零吃透 Modbus 通信|第 6 章:线圈功能码 05/0F 实现 & Modbus‑TCP 基础入门
c语言·网络·网络协议·tcp/ip
疯狂打码的少年25 分钟前
【数据库技术】SQL概述与数据定义(DDL:CREATE/DROP/ALTER)
数据库·笔记·sql·oracle
zzzll111130 分钟前
LangChain4j:Java 生态的 AI 应用开发利器
java·开发语言·人工智能
一条破秋裤38 分钟前
STM32 学习笔记:GPIO 输出原理与硬件设计
笔记·stm32·学习
JAI科研1 小时前
Deepseek Agent Harness教程(七) | Deepseek Harness不是一个内核加一堆插件
开发语言·人工智能·深度学习·算法·自然语言处理·transformer·vllm
摇滚侠1 小时前
《SpringBoot 3:入门与应用实战》第 9 章 使用 WebMvc 开发进阶 阅读笔记 24
spring boot·笔记·后端