栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Linux下,使用gcc/g++编译器编译c/c++代码,cpp文件经过预处理,编译,汇编,链接到可执行文件

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Linux下,使用gcc/g++编译器编译c/c++代码,cpp文件经过预处理,编译,汇编,链接到可执行文件

Linux下,使用gcc/g++编译器编译c/c++代码,cpp文件经过预处理,编译,汇编,链接到可执行文件

下载安装gcc:
Linux一般会自带gcc,如果没有就用rpm,yum,apt等包管理工具下一个,毫无难度。

O、gcc编译器:
1、用于c/c++源码的编译,但gcc本身不限于编译c/c++,还支持编译其他的很多种高级语言。
2、Linux开发c/c++一定要熟悉gcc
3、VS code本身没有编译功能,通过调用gcc编译器实现的c/c++的编译工作,有设计模式中委托工作的意思。
4、使用时:
gcc指令编译c代码
g++指令编译c++代码

一、文件的编译过程:
1、预处理 Pre-Processing,将.c/cpp生成.i文件
g++ -E test.cpp -o test.i
-E选项指定编译器只对输入文件继续处理
作用:
头文件和宏定义展开,将cpp文件扩展为一个完整的编译单元


使用cat或者vim可以查看预处理之后的文件的内容,经过预处理后,cpp文件变成了一个完整的编译单元,内容会比预处理之前多很多:

2、编译 compiling,将.i文件生成.s文件
g++ -S test.i -o test.s
-S告诉g++在为c++代码产生了汇编语言文件后停止编译
g++产生的汇编语言文件的缺省扩展名为.s
作用:
将编译单元中的所有语言转换为汇编语言。

3、汇编 assembling,将.s文件生成.o文件
g++ -c test.s -o test.o
-c告诉g++仅把源代码便以为机器语言的目标代码
g++产生的目标代码文件的默认扩展名为.o
作用:
将汇编语言转换为计算机可以直接识别的二进制语言。

4、链接 linking,将.o文件生成为bin文件
g++ test.o -o test
-o指定输出的文件名
作用:
二进制语言转换成可以执行的可执行文件。


5、整体编译命令时,虽然命令是一步的,但是命令的执行过程还是经过了上面四个步骤。
g++ test.cpp -o test

6、调用生成的可执行文件时,需要加上路径,光有文件名将不会执行。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/730651.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号