C++后端开发之Sylar学习一:配置环境

Sylar学习一:配置环境

安装虚拟机

我安装的是Ubuntu 20.04,分配了60G的SSD容量,8G的内存
在这里插入图片描述

配置Ubuntu

修改软件源

  1. 切换到管理员账户
  2. 进入到/etc/apt目录

/etc/apt 目录是 Ubuntu 系统中存储与包管理系统 APT (Advanced Package Tool) 相关的配置文件的地方。以下是该目录中主要的子目录和文件:
sources.list: 该文件包含了用于软件包管理的存储库源的信息。通过编辑这个文件,你可以指定系统从哪些源获取软件包。
sources.list.d/: 这个子目录包含了额外的源配置文件。每个文件对应一个源,使得你可以更灵活地管理存储库的配置。
preferences: 该文件用于指定软件包管理系统的行为偏好,例如默认的软件包版本选择规则等。
apt.conf: 这是 APT 的主要配置文件,包含了更广泛的 APT 配置选项。
这些文件和目录中的配置信息对于确保系统可以正确地获取和管理软件包是至关重要的。通过编辑这些文件,你可以定制软件包管理系统的行为以满足特定需求。

  1. 复制一份sources.list
sudo su
// 然后输入密码
cd /etc/apt
cp sources.list sources.list.bak
ls

在这里插入图片描述

  1. 使用vim编辑sources.list(当然使用gedit也可以)
vi sources.list
  1. 清空原内容,输入命令
%d
  1. 填入如下内容
# 阿里云镜像源
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse

# 清华源
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
  1. 然后保存退出
:wq
  1. 使系统获取最新的软件包列表
apt update
apt upgrade

在这里插入图片描述

配置git

具体请参考教程:https://blog.csdn.net/qq_34160841/article/details/104838269
简单说就是下面这几步:

  • 安装git
sudo apt-get install -y git
  • 配置用户名和邮箱
git config --global user.name  用户名               (github官网注册的用户名)
git config --global user.email  邮箱                (gitub官网注册绑定的邮箱)

只使用git clone的话配置到这里就可以了,clone的链接只能使用https的,ssh的那个用不了

  • 生成SSH秘钥
ssh-keygen -t rsa -C "你配置的邮箱" 

提示的地方一路按Enter

  • 查看SSH密钥
cat  ~/.ssh/id_rsa.pub
  • GitHub填入生成的SSH密钥
    GitHub登录后点击settings->SSH and GPS keys->New SSH key,填入刚才生成的SSH密钥即可

安装boost库

Boost 是一个由 C++ 社区开发和维护的一个开源的、跨平台的 C++ 库集合。Boost 库提供了许多功能强大且经过广泛测试的工具和组件,用于增强 C++ 语言的功能和性能。以下是 Boost 库的一些主要功能:
泛型编程支持: Boost 提供了许多支持泛型编程的工具,如模板元编程(Template Metaprogramming)和泛型算法,使得 C++ 能够更灵活地进行编程。
智能指针: Boost 包含了智能指针的实现,如 shared_ptr 和 scoped_ptr,用于帮助管理动态分配的内存,防止内存泄漏。
容器和数据结构: Boost 提供了一些非常灵活和高性能的容器,如 unordered_map、unordered_set,以及其他一些数据结构和算法。
多线程和并发编程: Boost 提供了多线程编程的支持,包括线程管理、同步原语(如互斥锁、条件变量)、线程间通信等。
正则表达式: Boost 包含了一个强大的正则表达式库,使得在 C++ 中进行复杂的字符串匹配和处理变得更加方便。
数学和算法: Boost 包含了一些数学库和算法库,用于处理数值计算和优化问题。
文件系统操作: Boost 文件系统库提供了对文件系统进行操作的功能,使得文件和目录的处理更加便捷。
网络编程: Boost.Asio 提供了异步网络编程的支持,使得开发网络应用变得更加高效。
总体而言,Boost 提供了许多丰富而实用的工具,使得 C++ 编程更加方便、高效,并且代码更具可移植性。很多 Boost 的组件在 C++ 标准库中得到了采纳,因此 Boost 也可以被视为 C++ 标准库的一个先导。

直接执行命令安装即可

apt install libboost-dev

安装cmake

CMake(Cross-platform Make)是一个跨平台的构建系统生成工具。它用于自动化软件项目的构建过程,提供了一种独立于编译器和操作系统的方式来描述项目的构建规则。以下是 CMake 的主要功能和用途:
跨平台构建: CMake 允许开发者在不同的操作系统上(如Windows、Linux、macOS)使用相同的构建描述文件生成适用于特定平台的构建系统文件(如Makefile、Visual Studio项目文件等)。
简化构建过程: CMake 的配置文件使用一种简洁且易读的语言,描述了项目的结构、依赖关系和构建规则,使得构建过程更加清晰和易于维护。
支持多编译器: CMake 不依赖于特定的编译器,允许项目在不同的编译器中进行构建,例如GCC、Clang、Microsoft Visual C++等。
模块化构建: CMake 支持模块化构建,允许将项目分解为多个子项目,每个子项目可以有自己的构建规则和依赖关系。
生成器的选择: CMake 支持多种生成器,例如Make、Ninja、Visual Studio等,开发者可以选择合适的生成器用于构建项目。
自动发现依赖: CMake 能够自动检测项目所依赖的库和头文件,简化了项目的配置过程。
定制构建选项: CMake 允许开发者定义和定制不同的构建选项,例如调试模式、发布模式等。
生成安装目标: CMake 可以生成用于将项目安装到系统的安装目标,使得用户可以方便地部署和使用软件。
总的来说,CMake 提供了一个统一的、跨平台的构建系统,使得软件项目的构建过程更加可维护和灵活。许多开源项目都使用 CMake 作为其构建工具,以便在不同平台上轻松构建和部署。

执行下面的命令即可

apt install cmake

安装yaml-cpp库

yaml-cpp 是一个用于解析和生成 YAML 格式数据的 C++ 库。YAML(YAML Ain’t Markup Language)是一种人类可读且可编写的数据序列化格式,常用于配置文件和数据交换。yaml-cpp 使得在 C++ 程序中处理 YAML 数据变得更加方便。
以下是 yaml-cpp 库的一些主要功能和用途:
解析 YAML: yaml-cpp 提供了能够将 YAML 格式的文本解析为 C++ 对象的功能。这使得你可以在程序中方便地读取和操作 YAML 数据。
生成 YAML: 除了解析 YAML,yaml-cpp 也支持将 C++ 对象转换为 YAML 格式的文本。这对于创建和输出 YAML 格式的配置文件非常有用。
与 STL 容器交互: yaml-cpp 可以与 C++ 标准模板库(STL)中的容器进行交互,轻松地将数据从 YAML 转换为 C++ 数据结构,反之亦然。
灵活性和可配置性: 库提供了一些选项和配置,使用户能够自定义解析和生成的行为,以满足特定的需求。
跨平台性: yaml-cpp 是跨平台的,因此可以在不同操作系统上使用。
使用 yaml-cpp 可以简化处理配置文件、读取用户输入或与其他系统进行数据交换的任务。它的语法简洁、易读,使得人们可以更直观地表示和编辑数据。

执行下面的命令即可

git clone https://github.com/jbeder/yaml-cpp.git
cd yaml-cpp
mkdir build
cd build
cmake ..
make & make install

安装openssl开发库

OpenSSL 是一个开源的软件库,提供了一组用于加密、解密、签名、验证等操作的加密算法和协议实现。它广泛用于网络通信、安全协议实现以及加密通信的开发中。如果你想进行 OpenSSL 的开发,你可能需要使用 OpenSSL 提供的开发库。
以下是一些常见的 OpenSSL 开发库:
libcrypto: 提供了一组加密和哈希算法,包括对称加密、非对称加密、哈希函数等。开发者可以使用这些功能进行数据加密、解密、签名和验证等操作。
libssl: 提供了安全套接字层(SSL)和传输层安全性(TLS)协议的实现。开发者可以使用这个库来实现安全的通信协议,如加密的客户端-服务器通信。
在进行 OpenSSL 开发时,你通常需要链接这两个库,即 libcrypto 和 libssl。你可以在编译时使用 -lssl -lcrypto 来链接这两个库。
请注意,OpenSSL 的 API 和用法可能会有一些变化,尤其是在不同版本之间。因此,在使用 OpenSSL 开发库时,建议参考相应版本的文档和示例代码。

执行下面的命令即可

apt-get install libssl-dev

安装Apache ab测试工具apache2-utils

apache2-utils 是与 Apache HTTP Server 相关的一组实用工具的软件包。这个软件包通常包括了一些用于配置、管理和测试 Apache HTTP Server 的命令行工具。其中一些工具包括:
ab (Apache Benchmark): 用于进行 Apache HTTP 服务器的性能测试,可以模拟多个并发连接。
htpasswd: 用于创建和更新 Apache HTTP 服务器的密码文件,通常用于基本身份验证(Basic Authentication)。
htdigest: 用于创建和更新 Apache HTTP 服务器的摘要文件,也用于身份验证。
这些工具使得在 Apache HTTP 服务器环境中进行一些常见的配置和性能测试任务变得更加方便。如果你在使用 Apache HTTP Server,并且希望使用这些实用工具,你可以安装 apache2-utils 软件包。

执行下面的命令即可

apt install apache2-utils

安装graphviz

Graphviz 是一个用于绘制图形的开源工具集。它支持各种图形类型的创建,包括有向图(digraphs)和无向图(graphs)。Graphviz 提供了一组命令行工具和库,使得用户可以通过简单的文本描述来生成各种复杂的图形。
主要特点和用途包括:
图的可视化: Graphviz 主要用于创建和可视化图形结构。这些图形可以表示网络拓扑、软件架构、流程图、组织结构等。
文本描述语言: Graphviz 使用一种简单的文本描述语言来定义图形结构。这种语言被称为 DOT 语言,通过描述节点、边、属性等信息,用户可以轻松创建图形。
多种布局算法: Graphviz 提供了多种布局算法,用于确定图形中节点和边的相对位置。这包括层次布局、圆形布局、树形布局等。
输出格式支持: 生成的图形可以以多种格式输出,如 PNG、SVG、PDF 等。这使得用户可以在不同的应用场景中使用生成的图形。
开源和跨平台: Graphviz 是一个开源项目,支持多种操作系统,包括 Linux、Windows、macOS 等。
Graphviz 在许多领域中得到了广泛的应用,包括软件工程、网络分析、系统建模、组织图等。通过简单的文本描述,开发者和研究人员可以轻松创建和共享图形化的信息。

执行下面的命令即可

apt install graphviz

安装doxygen

Doxygen 是一个用于自动化文档生成的工具,主要用于 C++ 程序,但也支持其他一些编程语言。它能够从代码中提取注释,并生成多种格式的文档,如 HTML、PDF、LaTeX 等,以便开发者能够更方便地阅读和理解代码。
Doxygen 的主要特点和用途包括:
提取注释: Doxygen 能够从源代码中提取特定格式的注释,这些注释通常是基于特殊标记的。标记的格式使得开发者能够为代码中的函数、类、变量等元素添加文档注释。
生成多种输出格式: Doxygen 支持生成多种格式的文档,包括 HTML、LaTeX、PDF 等。这使得开发者可以选择最适合其需求的文档格式。
生成交互式文档: Doxygen 生成的文档通常是交互式的,允许用户通过链接和搜索来浏览代码和文档。
支持多种编程语言: 尽管主要用于 C++,Doxygen 也支持其他编程语言,如 C、Objective-C、Java、Python 等。
图形化表示: Doxygen 可以生成各种图形,如类图、调用图、继承图等,以帮助开发者更好地理解代码的结构和关系。
易于配置: Doxygen 提供了丰富的配置选项,允许开发者根据项目的需要进行定制。
使用 Doxygen 可以使代码文档化更为简便,帮助项目团队和其他开发者更容易地理解和使用代码。

执行下面的命令即可

apt install doxygen

apt和apt-get区别

apt 和 apt-get 是两个用于管理软件包的命令行工具,它们在功能上有一些相似之处,但也有一些区别。

  • 用户界面:
    apt 提供了更友好、直观的用户界面,输出信息更为简洁,有一些颜色和格式化的特性。
    apt-get 的输出相对来说更为简单和原始,不含颜色或其他视觉效果。
  • 命令结构:
    apt 命令的结构更为简洁,更容易记忆。例如,apt install 用于安装软件包,apt update 用于更新软件包列表。
    apt-get 命令的结构相对较长,例如,apt-get install 和 apt-get update。
  • 智能依赖解决:
    apt 具有智能依赖解决的能力,能够自动处理软件包之间的依赖关系。
    apt-get 在处理依赖关系时可能需要手动添加额外的命令(如 apt-get -f install)。
  • 命令选项:
    apt 的命令选项相对更为一致和简化,更易于使用。
    apt-get 的命令选项相对较多,对于一些高级用法提供了更多的选项。
  • 并行下载:
    apt 具有并行下载的特性,可以同时下载多个软件包,提高下载效率。
    apt-get 在默认情况下不支持并行下载,但可以通过添加 -o Acquire::http::Dl-Limit=X 来启用,其中 X 是下载的并发数。

总体而言,apt 在设计上更注重用户友好性和直观性,而 apt-get 更注重灵活性和高级选项。在新的 Ubuntu 版本中,apt 被认为是推荐的包管理工具,因为它汲取了用户反馈,提供了更简单、直观的命令结构。

VSCode远程连接

Ubuntu上的依赖装好了,使用Vim开发对于我这样的小白来说未免难度太高了,经大佬指点,可以使用VSCode远程连接服务器,也就是我们刚安装的虚拟机进行开发,见下一篇文章!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

需求分析的结构化和面向对象方法

需求分析的方法,主要有结构化(SA)方法、面向对象分析(OOA)方法。另外有面向问题域的分析(Problem Domain Oriented Analysis,PDOA)方法,还有一些形式化方法例如VDM ( Vienna Design Method)和Z等…

Linux中Iptables使用

概念:网络中的防火墙,是一种将内部网络和外部网络分开的方法,是一种隔离技术 作用: 防火墙在内网与外网通信时进行访问控制,依据所设置的规则对数据包作出判断,最大限度地阻止网络中的黑客破坏企业网络&…

抓包工具Charles修改Response步骤

前言 Charles是在Mac下常用的截取网络封包的工具,在测试服务器端的网络通讯,往往用它来截取网络封包来分析。Charles通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取与…

hcip高级网络知识

一:计算机间信息传递原理 抽象语言----编码 编码---二进制 二进制---转换为电流(数字信号) 处理和传递数字信号 二:OSI--七层参考模型 ISO--1979 规定计算机系统互联的组织: OSI/RM ---- 开放式系统互联参考模型 --- 1…

Spring扩展点在微服务应用(待完善)

ApplicationListener扩展 nacos注册服务, 监听容器发布事件 # 容器发布事件 AbstractAutoServiceRegistration#onApplicationEvent # 接收事件吗,注册服务到nacos NacosServiceRegistry#register Lifecycle扩展 #订阅服务实例更改的事件 NamingService#…

Spring基于AbstractRoutingDataSource实现MySQL多数据源

目录 多数据源实现 yml配置文件 配置类 业务代码 案例演示 多数据源实现 yml配置文件 spring:datasource:type: com.alibaba.druid.pool.DruidDataSourcedatasource1:url: jdbc:mysql://127.0.0.1:3306/datasource1?serverTimezoneUTC&useUnicodetrue&characte…

数据结构笔记1

来自《Python数据结构学习笔记》(张清云 编著) 第一章 数据结构基础 1.逻辑结构 集合:结构中的数据元素除了同属于一种类型外,别无其他关系线性结构:数据元素之间一对一的关系树形结构:数据元素之间一对…

SwiftUI 打造酷炫流光边框 + 微光滑动闪烁的 3D 透视滚动卡片墙

功能需求 有时候我们希望自己的 App 能向用户展示与众不同、富有创造力的酷炫视觉效果: 如上图所示,我们制作了一款流光边框 + 微光滑动闪烁的 3D 透视卡片滚动效果。这是怎么做到的呢? 在本篇博文中,您将学到以下内容 功能需求1. 3D 透视滚动2. 灵动边框流光效果3. 背景…

C++力扣题目56--合并区间 738--单调递增的数字 968--监控二叉树

56. 合并区间 力扣题目链接(opens new window) 给出一个区间的集合,请合并所有重叠的区间。 示例 1: 输入: intervals [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6]. 示例 2: 输入: interv…

关于一个QT程序的简单破解思路(不需要分析信号和槽的方法,通用所有程序的破解思路)

几年前,公司买了台国产贴片机,里面的主程序是QT编写,运行在WINDOW XP系统上。主程序打开的界面,如图: 我来简单介绍下程序界面,各位读者不需要搞明白功能,只要知道大体的流程即可。 分析主界面: 一、左边的列表: 贴片生产文件,里面包括了贴片时元器件的坐标、飞达…

【Flutter 面试题】Flutter 是什么?它与其他移动开发框架有什么不同?

文章目录 写在前面Flutter是什么?定义和起源核心设计思想架构组成总结 Flutter与其他移动开发框架的差异1. 跨平台性能2. Dart语言的全面优势3. 热重载功能的优化体验4. 丰富的组件和库的生态系统5. UI一致性和用户体验总结 写在前面 👏🏻 正…

瓦片地图编辑器——实现卡马克卷轴的编辑,键盘控制游戏移动和鼠标点击游戏编辑通过同一个视口实现。

左边是游戏地图编辑区,右边是地图缓冲区,解决了地图缓冲区拖动bug,成功使得缓冲区可以更新。 AWSD进行移动 鼠标左右键分别是绘制/拖动 按F1健导出为mapv3.txt F2清空数组 打印的是游戏数组 easyx开发devcpp 5.11 easyx20220922版本 #…

Conditional Image-to-Video Generation with Latent Flow Diffusion Models

1 Title 重试 错误原因 Conditional Image-to-Video Generation with Latent Flow Diffusion Models(Haomiao Ni eg) 重试 错误原因 重试 错误原因 2 Conclusion This paper propose an approach for cI2V using novel latent flow diffusi…

C++ STL之priority_queue的使用及模拟实现

文章目录 1. 介绍2. priority_queue的使用3. priority_queue的模拟实现 1. 介绍 英文解释: 也就是说: 优先队列是一种容器适配器,根据严格的弱排序标准,它的第一个元素总是它所包含的元素中最大的。 此上下文类似于堆&#xff0c…

伊恩·斯图尔特《改变世界的17个方程》麦克斯韦方程方程笔记

它告诉我们什么? 电和磁并不会随便乱跑。旋转的电场区域会产生垂直于旋转方向的磁场。旋转的磁场区域也会产生垂直于旋转方向的电场,但方向相反。 为什么重要? 这是物理力的第一次重大统一,表明电和磁是密切相关的。 它带来了什么…

数据结构—基础知识(十):树和二叉树(b)

数据结构—基础知识(十):树和二叉树(b) 二叉树的定义 二叉树( Binary Tree)是n(n≥0)个结点所构成的集合,它或为空树(n0);或为非空树,对于非空树T: 有且仅有一个称之为根的结点;根结点以外的…

Oracle错误代码对应原因

Oracle oracle查询列长度太长ORA-01460ORA-01489ORA-01704 oracle查询列长度太长 查询的varchar的列字符串长度超过4000(取决与oracle怎么计算这个字符的长度) 例如: col like ‘%?%’,如果这个like后面的字符串长度超过4000就会报错,其中…

vivado使用注意事项

记得给constrs(.xdc)限制文件设置为目标文件(set as Target Consraint File)

计算机网络原理

第一章 认识计算机网络 👉计网体系结构 一、计算机网络概述 见x-mind 二、体系结构&参考模型 1.1 分层结构 1.1.1❓❓❓为什么要分层? 发送文件前要完成的工作: 发起通信的计算机必须将数通信的通路进行激活要告诉网络如何识别目的…

springboot120企业级工位管理系统

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的企业级工位管理系统 适用于计算机类毕业设计,课程设计参考与学习用途。仅供学习参考, 不得用于商业或者非法用途,否则,一切后果请用户自负。 看运行截图看 第五章 第四章 …