在 Ubuntu 下编写 C++
在 Ubuntu 下编写 C++
在 Ubuntu 上面编写 C++,本章节内容主要介绍在 Ubuntu 在终端窗口下使用 vi/vim 编辑一
个 C++源文件。通过编写最简单的示例“Hello,World!”。带领大家学习如何在 Ubuntu 终端下编
辑和编译 C++。这里要求大家会在 Ubuntu 上使用 vi/vim,也就是要求大家有一点 Ubuntu 入门
的基础。如果没有这些基础也是可以拷贝 C++的代码到 Windows 上使用像 Dev-C++这种轻量级
C/C++ 集成开发环境(IDE)进行编写和编译。
C++简介
C++ (c plus plus)是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程
语言,支持过程化编程、面向对象编程和泛型编程。C++ 被认为是一种中级语言,它综合了高
级语言和低级语言的特点。C++ 是由 Bjarne Stroustrup 于 1979 年在新泽西州美利山贝尔实验
室开始设计开发的。C++ 进一步扩充和完善了 C 语言,最初命名为带类的 C,后来在 1983 年
更名为 C++。C++ 是 C 的一个超集,事实上,任何合法的 C 程序都是合法的 C++ 程序。
截止 2020 年,在 2017 年发布 C++17,已经是第五个 C++标准了。我们也见过或者听过 C++98,
这样的 C++标准,也就是 1998 年发布的 C++,所以叫 C++98,是 C++的第一个标准。
学习 C++我们要理解概念,而不是深究语言技术细节。我们只要带着第二章的 C++基础概念,学习 Qt 或者写 C++会有一定的帮助
C++环境设置
为了写这份教程,作者也是从新装了一个 Ubuntu18.04。从头搭建环境。我们先配置软件源
的服务器地址为阿里云的地址。这样我们可以从国内去获取软件源,下载速度会更快。
我们要在 Ubuntu 编写 C++程序,那么需要有能编写代码的文本编辑和 C++编译器。在新
装的 Ubuntu 环境里,编译 C 语言的 GCC 没有安装,编译 C++的 G++也没有安装。执行下面的
执指令安装编译 C 语言和 C++的环境。
sudo apt-get install gcc g++
sudo apt-get install lsb-core lib32stdc++6 // 安装其他库
安装完成后,可以使用下面的指令来查看安装的 gcc 和 g++的版本。
g++ -v
gcc -v

编写一个简单的 C++程序
在终端输入下面的指令,首先我们创建一个 C++目录,然后使用 cd 指令进入 C++目录。
再创建01_hello_world目录,进入01_hello_world目录,然后使用vi指令编辑01_hello_world.cpp。
mkdir C++ // 创建一个 C++目录。
cd C++ // 进入创建的 C++目录。
mkdir 01_hello_world // 创建一个 01_hello_world 目录
cd 01_hello_world // 进入 01_hello_world 目录下。
vi 01_hello_world.cpp // 编辑 cpp 文件,拷贝下文的内容

拷贝下面的内容到 01_hello_world.cpp。
1 #include <iostream> 2 using namespace std; 3 int main() 4 { 5 cout << "Hello, World!" << endl; 6 return 0; 7 }
第 1 行,C++ 语言定义了一些头文件,这些头文件包含了程序中必需的或有用的信息。上
面这段程序中,包含了头文件 。
第 2 行,using namespace std; 告诉编译器使用 std 命名空间。命名空间是 C++ 中一个相
对新的概念。其中 std 就是 C++里的标准命名空间,也就是标准库里写好的了,我们可以直接
调用。
第 3 行,int main() 是主函数,程序从这里开始执行。
第 5 行,cout << “Hello World”<<endl; 会在屏幕上显示消息 "Hello World"并换行。“<<”
是运算符,endl 是换行语句。
第 6 行,return 0; 终止 main( )函数,并向调用进程返回
执行下面的语句进行编译和运行这个简单的 C++程序。
g++ 01_hello_world.cpp -o 01_hello_world // 使用 g++编译。-o 后面加的是输出的目标文件。
./01_hello_world // 在终端下执行,打印"Hello, World!"并换行。

我们可以拓展一下,如何输出多行。可以像下面一样无限加下去。其中我们发现打印了第一个 Hello,world!后也换行了,因为使用了“\n”。C++中可以使用 C 语言的语句,C++是 C 语言的超集。
1 #include <iostream> 2 using namespace std; 3 int main()
4 { 5 cout << "Hello, world!\n" << "Hello, world!" << endl; 6 return 0; 7 }
第 5 行,我们在里面再加用“<<”插入运算符(重载运算符)再插入一句“Hello, world!”打印,这样终端上就打印了两行“Hello, world!”。
相关文章:
在 Ubuntu 下编写 C++
在 Ubuntu 下编写 C 在 Ubuntu 上面编写 C,本章节内容主要介绍在 Ubuntu 在终端窗口下使用 vi/vim 编辑一 个 C源文件。通过编写最简单的示例“Hello,World!”。带领大家学习如何在 Ubuntu 终端下编 辑和编译 C。这里要求大家会在 Ubuntu 上使用 vi/vim…...
Linux主要目录的意思
Linux目录的意思 文章目录Linux目录的意思bin目录(命令目录):二进制目录,二进制是可以直接执行的机器码,里面存放着可以执行的命令;bin目录右下角有个箭头类似于Windows的快捷方式 sbin目录:系…...
启动golang项目编译的exe可执行文件获取windows管理员权限(UAC)
背景: go代码启动以后里面涉及到修改ip地址等操作,需要管理员权限。打包好的exe文件双击执行默认是没有管理员权限的,那么修改ip就会提示需要管理员权限。 解决方法1:右键以管理员权限运行exe文件 解决方法2:编译exe…...
Springboot怎么快速集成Redis?
前言其实在Springboot中集成redis是一个非常简单的事情,但是为什么要单独输出一篇文章来记录这个过程呢?第一个原因是,我记性不是太好,这次把这个过程记录下,在新的项目搭建的时候或者需要在本地集成redis做一些其他相…...
COM技术简单介绍
COM (Component Object Model) 是一种面向对象的编程技术,它在 Windows 操作系统中广泛使用。COM 提供了一种标准的方法来创建和使用可重用的软件组件,这些组件可以通过不同的编程语言和应用程序进行访问和使用。 COM 技术的主要特点包括: 组…...
NetworkMiner网络取证分析工具(26)
预备知识 NetworkMiner是一款windows平台下开放源代码的网络取证分析工具,同时也是一款比较好的协议分析工具,它通过数据包嗅探或解析PCAP 文件能够检测操作系统,主机名和网络主机开放的端口。 除了能够进行基本的数据包抓取分析N…...
Lombok 常用注解
文章目录简介MAVEN 依赖常用的注解1. Data 注解 :2. Setter 注解:3.Getter 注解:4.Log4j or Slf4j 注解5.NoArgsConstructor注解:6.AllArgsConstructor注解:7.RequiredArgsConstructor注解:8.Builder注解:9.Cleanup注解…...
SAP 生产订单和成本收集器在核算上的主要区别
生产订单: 特点: 1、 按照批次进行核算 2、 只有完全完工,才能够进行差异分析,分析差异来源。 目标制造费用:按照工单创建确认的作业数量*计划作业价格的乘积得到; 实际制造费用:按照作业确认…...
Nginx-http-flv-module流媒体服务器搭建+模拟推流+flv.js在前端html和Vue中播放HTTP-FLV视频流
场景 Windows上搭建Nginx RTMP服务器并使用FFmpeg实现本地视频推流: Windows上搭建Nginx RTMP服务器并使用FFmpeg实现本地视频推流_win nginx-rtmp最新版_霸道流氓气质的博客-CSDN博客 Vue中使用vue-video-player和videojs-flash插件实现播放rtmp视频文件流&…...
【大数据处理与可视化】一 、大数据分析环境搭建(安装 Anaconda 3 开发环境)
【大数据处理与可视化】一 、大数据分析环境搭建(安装 Anaconda 3 开发环境)实验目的实验内容实验步骤一、下载Anaconda安装包二、安装Anaconda3三、验证Anaconda是否安装成功四、Jupyter Notebook的使用1. 启动Anaconda自带的Jupyter Notebook2. 在code…...
Python3-输入和输出
Python3 输入和输出 输出格式美化 Python两种输出值的方式: 表达式语句和 print() 函数。 第三种方式是使用文件对象的 write() 方法,标准输出文件可以用 sys.stdout 引用。 如果你希望输出的形式更加多样,可以使用 str.format() 函数来格式化输出值。…...
Java后端通用接口设计
1、接口的响应要明确表示接口的处理结果 为了将接口设计得更合理,我们需要考虑如下两个原则: 对外隐藏内部实现。即服务A调用服务B,如果服务B异常,但是我们不要直接把服务B的状态码、错误描述直接暴露给用户; 设计接…...
万字长文带你走进MySql优化(系统层面优化、软件层面优化、SQL层面优化)
文章目录系统层面优化采用分布式架构使用缓存使用搜索引擎软件层面优化调整 MySQL 参数配置定期清理无用数据创建索引创建索引普通索引唯一索引全文索引组合索引空间索引主键索引外键索引索引前缀适合创建索引的场景不适合创建索引的场景优化表结构分库分表SQL优化explain执行计…...
云原生安全2.X 进化论系列|云原生安全2.X未来展望(4)
随着云计算技术的蓬勃发展,传统上云实践中的应用升级缓慢、架构臃肿、无法快速迭代等“痛点”日益明显。能够有效解决这些“痛点”的云原生技术正蓬勃发展,成为赋能业务创新的重要推动力,并已经应用到企业核心业务。然而,云原生技…...
认识进程 -了解进程调度
前言 本篇通过介绍操作系统OS的重要功能,了解并发并行, 了解操作系统的一项重要功能 “进程管理” , 通过了解进程管理认识进程是操作系统资源分配的基本单位 ,如有错误,请在评论区指正,让我们一起交流,共同进步! 文章…...
第十届省赛——7外卖店优先级
题目:“饱了么”外卖系统中维护着N 家外卖店,编号1~N。每家外卖店都有一个优先级,初始时(0 时刻) 优先级都为0。每经过1 个时间单位,如果外卖店没有订单,则优先级会减少1,最低减到0;而如果外卖店…...
做自动化测试选择Python还是Java?
今天,我们来聊一聊测试人员想要进阶,想要做自动化测试,甚至测试开发,如何选择编程语言 前言 自动化测试,这几年行业内的热词,也是测试人员进阶的必备技能,更是软件测试未来发展的趋势。特别是…...
C#基础之基础语法(一)
总目录 文章目录总目录前言一、C#简述1 C#是什么?2 .Net平台3. C# 和.Net的关系4. 集成开发环境(IDE)二、控制台应用程序1. 常用代码2.注意事项三、基础语法1.编写C#代码注意事项2.C#注释2. 变量&标识符&关键字4. 变量,字…...
【JVM篇1】认识JVM,内存区域划分,类加载机制
目录 一、JVM内存区域划分 ①程序计数器(每个线程都有一个) ②栈:保存了局部变量和方法调用的信息(每一个线程都有一个栈) 如果不停地调用方法却没有返回值,会产生什么结果 ③堆(每一个进程都有一个堆,线程共享一个堆) 如何区分一个变量是…...
CHAPTER 5 文件共享 - FTP
文件共享 - FTP1 FTP1.1 传输方式1. ASCII传输方式2. 二进制传输模式3. 两种传输方式的区别1.2 支持的模式1. 主动模式(PORT)2. 被动模式(PASV)3. 如何选择4. 为什么绝大部分互联网应用都是被动模式?1.3 搭建FTP服务器(使用vsftpd)1. 安装软件…...
stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...
CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...
零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...
uniapp手机号一键登录保姆级教程(包含前端和后端)
目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号(第三种)后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...
android13 app的触摸问题定位分析流程
一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...
