博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux下GCC编译的过程
阅读量:3950 次
发布时间:2019-05-24

本文共 711 字,大约阅读时间需要 2 分钟。

1.预处理 -E —— xx.i (中间文件)

2.编译 -S —— xx.s (汇编文件)
3.汇编 -c —— xx.o (目标文件)
4.链接 —— xx (可执行文件)

在这里插入图片描述

1.预处理

gcc -E Gcc_test.c  -o Gcc_test.i	//将.c文件生成.i(中间文件)// 处理所有以#开头的语句(头文件,宏定义等),预处理类似,不检查语法错误// 编译器在预处理结束时就停止编译

在这里插入图片描述

进行预处理 -E,生成xx.i文件(.i是中间文件)
2.编译

gcc -S test.i -o test.s//这一步的主要步骤是将.i(中间文件)文件编译生成.s(汇编文件)//检查是否有语法错误,确认无误后编译生成汇编语言

在这里插入图片描述

3.汇编

gcc -c test.s -o test.o//将.s(汇编文件)文件生成.o(二进制的目标文件)//也就是将汇编文件翻译成计算机认识的二进制的目标文件

在这里插入图片描述

4.链接

gcc test.o -o test//将.o(二进制的目标文件)生成可执行文件//链接系统库函数 ,没有特别指定时,gcc会到系统默认的搜索路径“/user/lib”//下进行查找,也就是链接到“lib.so.6”库函数中去

在这里插入图片描述

——————————————————
不分解,一次即可编译成功:
gcc tets.c -o test

https://so.csdn.net/so/search/s.do?q=gcc%E7%BC%96%E8%AF%91%E6%B5%81%E7%A8%8B&t=&u=

https://blog.csdn.net/chengyq116/article/details/87856641

你可能感兴趣的文章
try-catch-finally执行顺序及语句中对变量进行赋值的问题
查看>>
阻塞锁与自旋锁
查看>>
Java中的<< 和 >> 和 >>> 详细分析
查看>>
Java中字节Byte和位Bit的关系及最小值最大值表示
查看>>
spring启动时只执行一次的方法实现
查看>>
es分片分配问题及配置总结
查看>>
【面试官:select语句和update语句分别是怎么执行的
查看>>
redis-benchmark压力测试使用
查看>>
Java8 中 List 转 Map(Collectors.toMap) 使用技巧
查看>>
JUC体系图
查看>>
i++
查看>>
尚硅谷netty笔记
查看>>
mysql回表查询,聚集索引与普通索引
查看>>
乐观锁与悲观锁
查看>>
[数据库]事务、并发、数据库锁
查看>>
单例设计模式
查看>>
装饰设计模式和代理设计模式的区别
查看>>
Struts2中值栈
查看>>
Hash算法冲突解决方法分析
查看>>
网络地址和主机地址
查看>>