Linux初步使用:书写一个最基本的cpp程序

本篇博客具体总结:如何从刚安装好Ubuntu系统到顺利运行第一个cpp程序

参考高博的十四讲。看似没多少步骤,但第一次学习发现此过程中实际上已经简单熟悉了一下Linux的目录结构、软件安装、终端命令操作、Vim使用和g++编译。

1.Linux目录结构

Linux的目录究竟是怎么回事,刚开始其实不用太详细地了解。简单观察一下,知道它并不是像Windows那样分成好几个可视化的硬盘,而是一种类似树状的结构形式就行了。后面学习全都在/home这个目录下面。
Linux初步使用:书写一个最基本的cpp程序_第1张图片
对文件夹的各种操作,包括进入、新建、移动、删除、重命名等,直接用鼠标操作即可,和Windows上习惯一样,但是必须学习一下怎么使用Linux的终端来实现。(其实和Windows的cmd一样)

关于终端命令,下面再介绍。

Linux目录结构的详解:

https://www.cnblogs.com/silence-hust/p/4319415.html

2.软件安装

作为长期使用Windows的用户,第一次接触Linux我也觉得疑惑,发现它貌似是用一个叫“软件中心”的应用统一管理系统里的所有软件的。

你可以正常打开浏览器通过网络下载安装包(deb文件),直接双击打开它(Linux默认用“软件中心”打开),在跳出的界面里,点“Install”安装即可。

你也可以通过终端输入命令,让系统自己去服务器上下载安装包(如果有的话)。

3.终端命令、Vi和g++

Ctrl+Alt+T键打开终端窗口。此时默认路径是在根目录下面,即上面图片里的路径。

输入

cd /home

进入home目录。cd是“change directory”的缩写,用于变换路径。
在这里插入图片描述
继续输入

sudo mkdir slambook

在home目录下创建一个名为“slambook”的文件夹。“sudo”用于获取管理员权限(如果提示输入密码就输开机密码),“mkdir”为“make directories”的缩写,用于创建目录,后面跟上目录的名字。

继续输入

cd slambook

进入刚创建好的这个“slambook”文件夹(因为它就在你的当前路径下,所以不需要加斜杠)。

输入

sudo mkdir ch2

创建名为“ch2”的文件夹以备存放代码(参考教材如此,可以跳过)。

下面就要使用Vi/Vim来写代码。Vi是Linux自带的编辑器,相当于Windows里面的记事本。在Vi里写好代码后保存,然后运行g++编译它就能看到运行结果。因此,接下来先安装g++编译器。

终端输入

sudo apt-get install g++

“apt”意为使用了APT软件工具。后面用连字符加上各种命令可以进行软件的安装和更新等系列操作。

窗口会显示软件的信息,提示是否要下载(Y/N),输入“Y”开始下载。紧接会显示下载速度和进度,这时不用做任何操作,等待其下载安装完成后,终端会自动进入待机状态。

下面就可以打开Vi写代码了。

在slambook/ch2的路径下,终端输入

sudo vi helloSLAM.cpp

创建一个名为“helloSLAM.cpp”的源文件,同时终端窗口内打开了Vi编辑器。

关于Vi编辑器的使用,这篇博客介绍得很好:

https://www.cnblogs.com/xinbaby829/p/6632117.html

只要浏览前三分之一的部分,了解怎么切换编辑模式、输入、删除、移动光标和保存文件,就足够继续进行下去了。

输入以下代码:

#include 
using namespace std;

int main(int argc,char** argv)
{
	cout<<"HelloSLAM!"<

然后按Esc键退回命令行模式,输入冒号“:”加“wq”保存。
Linux初步使用:书写一个最基本的cpp程序_第2张图片
接着,在终端输入

sudo g++ helloSLAM.cpp

进行编译。顺利的话不会输出任何信息,然后产生一个名为“a.out”的可执行文件。
Linux初步使用:书写一个最基本的cpp程序_第3张图片
最后,终端输入命令直接运行即可得到结果。

./a.out

终端输出

HelloSLAM!

至此,就成功书写一个最基本的cpp程序并运行啦。

理论上说,任何一个C++程序都可以用g++来编译,但当程序规模越来越大时,一个工程会包含很多文件夹和源文件,仅靠g++编译命令会变得非常繁琐。对于C++项目,用cmake来管理更加高效。

安装了cmake后,写一个cmakelist,调用cmake分析,然后执行“make”命令就可以完成项目的编译了。具体细节这里不作介绍。

你可能感兴趣的:(视觉SLAM学习)