预处理、编译、汇编、链接

或者一步条指令

复制代码
gcc helloworld.c -o helloworld

1.预处理

  1. 宏替换
  2. 去注释
  3. 引入头文件

**#**之后的语句都是预处理语句,

#include<iostream> 将该文件的内容拷贝到现有文件中,结果得到一个C程序,通常是以.i作为文件扩展名的。

2.编译

词法分析、语法分析、语义分析以及优化,加工为当前机器支持的"s"的汇编代码

3.汇编

汇编阶段是把编译阶段生成的".s"文件,使用选项"-c"把汇编代码转化为".o"的二进制目标代码

4.链接

链接库文件或相关文件,生成可执行文件

函数库一般分为静态库和动态库两种。在没有特别指定时,gcc会到系统默认的搜索路径"/usr/lib"下进行查找

静态库是指在编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但在运行时也就不需要库文件了,其后缀一般为".a"。

如果多个程序使用了相同的库函数,那么运行的时候内存中会存在大量冗余代码

动态库与之相反,在编译链接时并没有把库文件的代码加入到可执行文件中,而是在程序执行时链接文件加载库,这样就可以节省系统的开销,动态库一般后缀名为".so",

gcc

基于C/C++的编译器

补充说明

gcc命令 使用GNU推出的基于C/C++的编译器,是开放源代码领域应用最广泛的编译器,具有功能强大,编译代码支持性能优化等特点。现在很多程序员都应用GCC,怎样才能更好的应用GCC。目前,GCC可以用来编译C/C++、FORTRAN、JAVA、OBJC、ADA等语言的程序,可根据需要选择安装支持的语言。

语法

复制代码
gcc(选项)(参数)

选项

复制代码
-o:指定生成的输出文件;
-E:仅执行编译预处理;
-S:将C代码转换为汇编代码;
-wall:显示警告信息;
-c:仅执行编译操作,不进行连接操作。
相关推荐
fengye2071613 天前
板凳----------(枯藤 )vs2026+win10(第六章-4)
汇编
-曾牛4 天前
【汇编语言入门】从第一个加法程序吃透汇编核心基础
汇编·单片机·嵌入式硬件·汇编语言·病毒分析·lcx·逆向开发
切糕师学AI4 天前
ARM 汇编指令:ROR(循环右移)
汇编·arm开发
切糕师学AI4 天前
ARM 汇编指令:LSL(逻辑左移) 和 LSR(逻辑右移)
汇编·arm开发
草莓熊Lotso5 天前
Python 库使用全攻略:从标准库到第三方库(附实战案例)
运维·服务器·汇编·人工智能·经验分享·git·python
山峰哥6 天前
SQL优化中的索引策略与Explain分析实战
大数据·汇编·数据库·sql·编辑器
山峰哥6 天前
SQL调优实战指南:从索引设计到高并发场景优化全链路解析
大数据·汇编·数据库·sql·编辑器·区块链
fengye2071617 天前
板凳----------(枯藤 )vs2026+win10(第六章-2)
汇编
2501_918126918 天前
用Python开发一个三进制程序开发工具
开发语言·汇编·python·个人开发
黎雁·泠崖8 天前
Java底层探秘进阶:JIT汇编逐行拆解!Java方法栈帧与C语言深度对标
java·c语言·汇编