Sylar学习一:配置环境
安装虚拟机
我安装的是Ubuntu 20.04,分配了60G的SSD容量,8G的内存
配置Ubuntu
修改软件源
- 切换到管理员账户
- 进入到/etc/apt目录
/etc/apt 目录是 Ubuntu 系统中存储与包管理系统 APT (Advanced Package Tool) 相关的配置文件的地方。以下是该目录中主要的子目录和文件:
sources.list: 该文件包含了用于软件包管理的存储库源的信息。通过编辑这个文件,你可以指定系统从哪些源获取软件包。
sources.list.d/: 这个子目录包含了额外的源配置文件。每个文件对应一个源,使得你可以更灵活地管理存储库的配置。
preferences: 该文件用于指定软件包管理系统的行为偏好,例如默认的软件包版本选择规则等。
apt.conf: 这是 APT 的主要配置文件,包含了更广泛的 APT 配置选项。
这些文件和目录中的配置信息对于确保系统可以正确地获取和管理软件包是至关重要的。通过编辑这些文件,你可以定制软件包管理系统的行为以满足特定需求。
- 复制一份sources.list
sudo su
// 然后输入密码
cd /etc/apt
cp sources.list sources.list.bak
ls
- 使用vim编辑sources.list(当然使用gedit也可以)
vi sources.list
- 清空原内容,输入命令
%d
- 填入如下内容
# 阿里云镜像源
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
- 然后保存退出
:wq
- 使系统获取最新的软件包列表
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远程连接服务器,也就是我们刚安装的虚拟机进行开发,见下一篇文章!