linux下的预编译、编译、汇编、连接,生成单独文件,感受编译过程

linux下的预编译、编译、汇编、连接,生成单独文件。首先需要确认系统安装了gcc编译器,输入gcc -v或者g++ -v,如果能看到版本号等信息就是已经存在了,如图(centos7)

在这里插入图片描述
然后随便vim产生一个.cpp文件,下面给出一个示例:

#include<iostream>
using namespace std;
void QuickSort(int *,int,int);
int main()
{
int a[8] = {3,2,4,1,5,6,7,9};QuickSort(a,0,7);for(auto i : a)cout<<i<<endl;return 0;
}
//快速排序示例
int Partition(int *a,int left,int right)
{int key = a[left];int p = left;while(left < right){while(left < right && key < a[right])right--;a[p] =a[right];p = right;while(left < right && key > a[left])left++;a[p] = a[left];p = left;}a[p] = key;return p;
}void QuickSort(int *a,int left,int right)
{if(left < right){int p = Partition(a,left,right);QuickSort(a,left,p-1);QuickSort(a,p+1,right);}
}

将其命名为test.cpp,然后可以开始下面的步骤
1、预处理 Pre-Processing,将.c/cpp生成.i文件

g++ -E test.cpp -o test.i

-E选项指定编译器只对输入文件继续处理

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指定输出的文件名

一次编译通过
如果用了c++11及以上语法可能会报错,需要加上-std=c++作为参数,加的位置随意

g++  test.cpp -o test
g++ -std=c++11  test.cpp -o test

如果有什么疑问欢迎评论交流!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/453361.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python Flask 写一个简易的 web 端上传文件程序 (附demo)

python Flask 写一个简易的 web 端上传文件程序 &#xff08;附demo&#xff09; 需求介绍核心代码&#xff1a; 文件结构前端文件后端文件 完整代码演示 需求 在当今数字化时代&#xff0c;文件上传需求日益普遍。无论是个人还是企业&#xff0c;都可能需要实现文件上传功能。…

图解支付-金融级密钥管理系统:构建支付系统的安全基石

经常在网上看到某某公司几千万的个人敏感信息被泄露&#xff0c;这要是放在持牌的支付公司&#xff0c;可能就是一个非常大的麻烦&#xff0c;不但会失去用户的信任&#xff0c;而且可能会被吊销牌照。而现实情况是很多公司的技术研发人员并没有足够深的安全架构经验来设计一套…

arcpy高德爬取路况信息数据json转shp

最近工作上遇到爬取的高德路况信息数据需要在地图上展示出来&#xff0c;由于json数据不具备直接可视化的能力&#xff0c;又联想到前两个月学习了一点点arcpy的知识&#xff0c;就花了一些时间去写了个代码&#xff0c;毕竟手动处理要了老命了。 1、json文件解读 json文件显…

机器学习的整个流程

机器学习的整个流程定义了数据科学团队执行以创建和交付机器学习模型的工作流。此外&#xff0c;机器学习流程还定义了团队如何协作合作&#xff0c;以创建最有用的预测模型。 机器学习high level的流程 机器学习流程的关键步骤包括问题探索&#xff08;Problem Exploration&a…

vscode 无法远程连接waiting the server log

使用版本 报错信息 相关日志 [17:32:59.765] > Waiting for server log... [17:32:59.801] > Waiting for server log... [17:32:59.831] > > * > * Visual Studio Code Server > * > * By using the software, you agree to > * the Visual Studio…

vulhub中AppWeb认证绕过漏洞(CVE-2018-8715)

AppWeb是Embedthis Software LLC公司负责开发维护的一个基于GPL开源协议的嵌入式Web Server。他使用C/C来编写&#xff0c;能够运行在几乎先进所有流行的操作系统上。当然他最主要的应用场景还是为嵌入式设备提供Web Application容器。 AppWeb可以进行认证配置&#xff0c;其认…

RK3399平台开发系列讲解(内存篇)进程内存详解

🚀返回专栏总目录 文章目录 一、虚拟地址映射的物理内存1.1、物理内存1.2、虚拟内存1.2.1、用户态:低特权运行程序1.2.2、内核态:运行的程序需要访问操作系统内核数据二、PageCache三、指标查询命令沉淀、分享、成长,让自己和他人都能有所收获!😄 📢进程消耗的内存包…

详解洛谷P2912 [USACO08OCT] Pasture Walking G(牧场行走)(lca模板题)

题目 思路 一道模板题&#xff0c;没啥好说的&#xff0c;直接见代码 代码 #include <bits/stdc.h> using namespace std; int n,q,a,to[100001][22],b,deep[100001],c,t[1000001]; struct ff {int id,len; }; vector<ff> vec[100001]; void dfs(int x,int fa,i…

LeetCode:292.Nim 游戏

大一开学到现在&#xff0c;我不禁思考一个问题&#xff1a;代码重要吗&#xff1f; 我的答案是&#xff0c;根本不重要&#xff0c;或者说&#xff0c;是次要的。我认为分析问题&#xff0c;和画图是写题的开始&#xff0c;方法的学习&#xff0c;和灵活运用是目的。代码从来…

华为数通方向HCIP-DataCom H12-821题库(单选题:421-440)

第421题 以下关于IS-IS中路由器分类的描述,错误的是哪一项? A、Level-1路由器无法与Level-2路由器建立邻接关系 B、华为路由器上配置IS-IS时,缺省时,路由器全局Level为Level-1-2 C、Level-2的LSDB只包含Level-2路由器所在区域的路由信息 D、Level-1路由器可以和Level-1-2路…

如何在 iconfont 中使用彩色图标

新建彩色图标项目&#xff0c;在设置字体格式时选择【彩色】 如果需要项目支持彩色图标&#xff0c;则图标数不得超过40个&#xff0c;所以不修改原项目的项目配置&#xff0c;而是新建 引用方式按照普通图标形式引用即可&#xff0c;即使给图标设置了color也不会修改原图标…

STM32WLE5JC

多协议LPWAN 32位 ARM Cortex-M4 MCUs&#xff0c;LoRa&#xff0c;FSK&#xff0c;MSK&#xff0c;BPSK&#xff0c;最大256KB FLASH&#xff0c;64KB SRAM。 LPWAN代表低功耗广域网&#xff08;Low-Power Wide-Area Network&#xff09;&#xff0c;是一种无线网络技术&…