1.C++编译过程

1.Linux 如何安装 C++ 编译环境

(1)安装 gcc

下载:sudo apt install gcc g++ 
安装:gcc/g++ -v/--version

其中 gcc 用于编译 C ,g++ 用于编译 C++

版本要 >4.8.5 这样才能使用 C++11 的特性

(2) 使用 g++ 编译代码

首先现在对应目录下编写一个 c++ 程序,如:test.cpp,然后执行下面的命令进行编译

g++ test.cpp -o test.out

其中 -o 代表:生成可执行目标文件

test.out 是用户自定义的可执行文件名称,在 linux 下是 .out 在 windows 中是 .exe

(3)运行可执行文件

不能直接敲指令 test.out ,要在前面加 ./test.out

2.编程语言的发展

2.1 编程语言的发展

image-20211029105526970

机器语言:计算机识别的语言

汇编语言:使用简单的符号代替机器语言

2.2 GCC 工作流程

image-20220926111116620

预处理:将头文件导入,宏替换,去掉一些注释

编译:对预处理完的文件进行一系列的词法分析,语法分析,语义分析及优化后生成相应的汇编代码

汇编:对汇编代码进行处理,生成处理器能识别的指令,目标代码

链接:将这个文件中使用的相关库进行链接,形成可执行程序

2.3 gcc 编译选项代码演示

image-20211029111249299 image-20211029110233749 image-20211030103225473

分别执行上面的代码:

最常用的指令 : Esc 并且是按照顺序来的

1.-E

预处理源文件

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

这是一个长长的文件,直接定位到 Hello World 部分,可以看到所有的注释,宏定义,头文件全部被替换

2.-S

生成汇编代码

g++ test.i -S -o test.s
image-20211029111913031

3.-s

生成可执行文件

g++ test.s -s -o test.o
image-20211029112057911

上图是一对乱七八糟的东西,其实这个文件不能被打开。但是可以直接执行

image-20211029112207044

4.一步式操作

g++ test.cpp
image-20211029112518629

可以看到上图直接生成了一个 .out 文件,同理如果直接跳过 -E 还有 -S 直接执行 -s 也是可以的

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

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

相关文章

【QT学习】4.对话框学习,浮动窗口,模态对话框,非模态对话框,消息框,文件对话框

1.浮动窗口 代码&#xff1a; //制作核心控件&#xff1a;文本编辑框QTextEdit* pTextEditnew QTextEdit;//制作浮动控件connect(pMenu1,&QMenu::triggered,[](QAction* pAction){qDebug()<<pAction->text()<<endl;if(pAction->text()"浮动控件&quo…

Spring与Web环境的集成

1. ApplicationContext应用上下文获取方式 应用上下文对象是通过new ClasspathXmlApplicationContext(spring配置文件) 方式获取的&#xff0c;但是每次从容器中获得Bean时都要编写new ClasspathXmlApplicationContext(spring配置文件) &#xff0c;这样的弊端是配置文件加载多…

Vulnhub:DEVCONTAINER: 1

目录 信息收集 arp nmap nikto whatweb WEB 信息收集 dirmap 文件上传 提权 系统信息收集 横向提权 信息泄露 get root 信息收集 arp ┌──(root㉿ru)-[~/kali/vulnhub] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:50:56:2f:dd…

YUM仓库和编译安装

目录 一.YUM仓库搭建 1.简介&#xff1a; 2.搭建思路&#xff1a; 3.实验&#xff1a;单机yum的创建 二.编译安装 1.简介 2.安装过程 3.实验&#xff1a;编译安装nginx 一.YUM仓库搭建 1.简介&#xff1a; yum是一个基于RPM包&#xff08;是Red-Hat Package Manager红…

超级agent的端语言模型Octopus v2: On-device language model for super agent

大型语言模型&#xff08;LLMs&#xff09;在函数调用方面展现出卓越的应用潜力&#xff0c;特别是针对Android API的定制应用。与那些需要详尽描述潜在函数参数、有时甚至涉及数万个输入标记的检索增强生成&#xff08;RAG&#xff09;方法相比&#xff0c;Octopus-V2-2B在训练…

计算机网络⑨ —— TCP粘包与拆包

1. 什么是TCP粘包与拆包 TCP作为传输层协议并不了解上层业务数据的具体含义&#xff0c;它会根据TCP缓冲区的实际情况进⾏数据包的划分&#xff0c;所以在业务上认为是⼀个完整的包&#xff0c;可能会被TCP拆分成多个包进⾏发送&#xff0c;也有可能把多个⼩的包封装成⼀个⼤的…

fastlio2 保存每帧的点云和每帧的里程计为单独的文件做后端回环优化和手动回环优化

为了 提供数据做后端回环优化和手动回环优化,需要保存每帧的点云和每帧的里程计为单独的文件,并且需要保存的名字为ros时间戳。 效果很好,比我自己写的手动回环模块好用 // This is an advanced implementation of the algorithm described in the // following paper: /…

ZLMediaKit ubantu 下编译

1、获取代码 #国内用户推荐从同步镜像网站gitee下载 git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit cd ZLMediaKit #千万不要忘记执行这句命令 git submodule update --init二、依赖库 Debian系(包括ubuntu&#xff09;系统下安装依赖的方法&#xff1a; #除了…

如何修改电脑用户名user后的名字

更改电脑用户名&#xff08;C:\Users\用户名&#xff09; 直接上步骤 1.WinR打开运行窗口&#xff0c;输入regedit&#xff0c;打开注册表&#xff0c;CtrlF搜索&#xff0c;找到ProfileList,这里会出现几个S-1-5开头的文件。 这里有一处注意的&#xff1a; 图片中的这个位置要…

2024.4.8-day12-CSS 常用样式属性和字体图标

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; 文章目录 作业2024.4.8-学习笔记盒子阴影文本阴影透明的vertical-align字体使用 作业 &…

2024年网络安全趋势前瞻:从AI攻击到云安全新挑战

随着2024年开展新的序幕&#xff0c;网络安全领域正面临着前所未有的挑战与机遇&#xff0c;一系列引人注目的趋势和预测逐渐浮出水面。 一、AI技术发展引发的安全问题 近年来&#xff0c;我们见证了AI技术的飞速进步&#xff0c;其中ChatGPT等引领潮流的AI服务成为公众瞩目的…

STL优先队列比较器

有两个比较器&#xff0c;在std里面&#xff0c;一个是greater&#xff0c;一个是less&#xff0c;他们都有一个可以指定的模板类型。 #include <bits/stdc.h> using namespace std; struct node {bool operator ()(const string& a, const string& b){return a…

Linux——计算机进程基础知识

计算机基础知识 1.计算机组成五大部件: (1) 运算器 &#xff1a;也叫算数逻辑单元&#xff0c;完成对数据的各种常规运算&#xff0c;如加减乘除&#xff0c;也包括逻辑运算&#xff0c;移位&#xff0c;比较等。 (2) 控制器 &#xff1a; 它是整个计算机系统的控制中心&…

【云开发笔记No.29】如何建设数据中台

数据中台的建设是一个系统性工程&#xff0c;涉及多个层面和多个步骤。以下是根据当前行业实践和技术发展趋势总结的数据中台建设的关键步骤&#xff1a; 统一数据标准与规范&#xff1a; 确立统一的数据指标口径&#xff0c;消除数据的二义性&#xff0c;这是确保数据质量和一…

嵌入式算法开发系列之大林算法

嵌入式系统中的大林算法 文章目录 嵌入式系统中的大林算法前言一、大林算法原理二、大林算法应用三、C语言实现总结 前言 在嵌入式系统中&#xff0c;算法的选择对系统性能和资源利用具有重要影响。大林算法是一种常见的图论算法&#xff0c;用于求解最小生成树和最短路径等问…

【三维重建工具】NeRFStudio、3D GaussianSplatting、Colmap安装与使用指南(更新中)

目录 一、NeRFStudio安装1.安装&#xff08;ubuntu系统&#xff09;2.安装&#xff08;windows系统&#xff09; 二、安装tinycudann三、Colmap安装与使用1. 安装依赖2. 安装colmap3.使用colmap3.1 可视化界面使用3.2 Nerfstudio命令行调用Colmap 四、使用NeRFStudio进行三维重…

行云防水堡-打造企业数据安全新防线

企业数据安全&#xff0c;顾名思义就是通过各种手段或者技术或者工具保障企业数据的安全性&#xff1b;保障数据信息的硬件、软件及数据受到保护&#xff0c;不受偶然的或者恶意的原因而遭到破坏、更改、泄露&#xff0c;系统连续可靠正常地运行&#xff0c;信息服务不中断。目…

常见的八大排序总结

下面列出了八种常见的排序算法&#xff0c;以及它们的特点以及相同点和不同点&#xff1a; 1. 冒泡排序&#xff08;Bubble Sort&#xff09;&#xff1a; - 特点&#xff1a;通过重复遍历要排序的列表&#xff0c;比较每对相邻的元素&#xff0c;并依次交换顺序&#xff0…

linux tasklet

软中断、tasklet 以及工作队列&#xff0c;均是 linux 中将任务推后执行的机制。其中工作队列与用户态使用的线程池类似。 什么是任务推后执行呢 ? 可以借助于开发应用时经常使用的线程池来理解。任务推后执行&#xff0c;就是任务本该执行的时候没有立即执行&#xff0c;而是…

文档转换失败如何排查?魔众文库系统

如何排查 文档转换失败时&#xff0c;请查看最新的日志文件 storage/logs/laravel-*.log 日志文件中会将执行的命令和命令执行后返回的结果存储到日志中&#xff0c;请参考日志报错信息自行解决。