1. 目录结构和文件系统
ubuntu的文件系统也是一个又层次的树形结构,文件系统的最上层是 / ,表示根目录,所有其他文件和目录都位于根目录下,在linux中,一切皆为文件,包括硬盘、分区和拔插介质。跟目录下的常见目录列表:
cd / 进入根目录
cd 或 cd ~ 进入用户的home目录
cd .. 进入上一级目录
cd ../book 进入同一主文件夹的另一文件夹
“.”是指当前目录。 “/”是目录层分隔表示符
“./”也是当前目录,但./后一个程序名,则会运行程序
在 Linux 里面使用 :cd + . 表示当前目录,.. 表示上一级目录, - 表示上一次所在目录,~通常表示当前用户的"home"目录。使用 pwd 命令可以获取当前所在路径(绝对路径)。
(以 . 开头的文件都是隐藏文件,所以这两个目录必然也是隐藏的,你可以使用ls -a 命令查看隐藏文件)
manual的缩写,操作说明、手册、指南 如:man ls
3. 文本编辑器gedit
打开文件: gedit + 文件名
4. 软件包管理程序APT
常用apt命令:
apt的相关路径
有的软件还需安装依赖项,具体怎么安装,需百度,大概是:
然后编译安装cmake ,make, sudo make install
5.进入管理模式和使用终端:
键入sudo su后输入密码可进入root模式,即‘$’变‘#’。(root模式) 密码:AMOV
6.Linux 文件的基本操作
使用 touch 命令创建空白文件,关于 touch 命令,其主要是来更改已有文件的时间戳的,但其在不加任何参数的情况下,只指定一个文件名,则可以创建一个为指定文件名的空白文件。例子:touch test
使用 mkdir(make directories)命令可以创建一个空目录,也可同时指定创建目录的权限属性。例子:mkdir mydir
使用 -p 参数,创建子目录,同时创建父目录(如果不存在该父目录),如下我们同时创建一个多级目录(这在有时候安装软件,配置安装路径时非常有用):mkdir -p father/son/grandson
mkdir –p 目录A/目录B
touch是创建文件,mkdir是创建文件夹也可以说是创建目录
使用cp(copy)命令复制一个文件或目录到指定目录。例子:cp test father/son/grandson
要成功复制目录需要加上-r或者-R参数。例子:cp -r father family
使用rm(remove files or directories)命令,删除一个文件或目录;例子:rm test
有时候你会遇到想要删除一些为只读权限的文件,直接使用rm删除会显示一个提示,就需要用上参数 -f ;
例如:rm -f test ( -f 强制删除)
跟复制目录一样,要删除一个目录,也需要加上-r或-R参数。例子:rm -r family(-r 删文件夹)
使用mv(move or rename files)命令,移动文件(剪切)。
格式:mv 源目录文件 目的目录。例子:mv file1 Documents
格式:mv 旧的文件名 新的文件名
例子:mv file1 myfile
7. 1快捷键
7.2最常用的帮助命令
8.使用VIM
Esc +
:q! 丢弃所有的修改并退出;不保存退出;
:wq 将缓冲区内的资料写入磁盘中,保存并离开vim;
:set 环境变量的当前值;
:set nu 设定资料的行号;
:set ai 自动内缩。
∶d$ 从当前光标删除至当前行末尾;
∶dd 删除整行,请输入。
insert 进入编辑模式
set nu 设置行号
9.Hello SLAM
首先在/home中创建slamboook文件夹,对应章节/ch2;
注:在主文件夹里创建(复制粘贴)不需要进入root模式,在/home中进行操作必须进入root模式。
若没有安装g++,键入 sudo apt-get install g++安装。
输入 ./a.out 会输出Hello SLAM!
g++ helloSLAM.cpp -0(零) hello
输入运行:./hello
在 linux 平台下使用 CMake 生成 Makefile 并编译的流程如下:
1、编写 CmakeLists.txt。
2、执行命令“cmake PATH”或者“ccmake PATH”生成 Makefile ( PATH 是 CMakeLists.txt 所在的目录 )。
3、使用 make 命令进行编译。
1. 在slambook/ch2中新建(vim)一个CMakeLists.txt文件,按模板输入,确保输入正确。
2. 在ch2下调用cmake进行工程分析:键入 cmake .(生成一些中间文件和MakeFile。)
3. 编译工程:键入 make (输出一个编译进度,产生可执行程序helloSLAM。)
4. 执行程序:键入 ./helloSLAM (输出 Hello SLAM!)
5.处理中间文件:
mkdir build (创建build,build文件夹在ch2文件夹里面)
cd build
cmake .. (对上一层文件夹(代码所在文件夹)进行编译)
make (build文件外,ch2里不可有其他文件,处于未编译过,即 2个.cpp和1个.txt文件)
6.添加一个可执行程序 语法:add_executable(程序名 源代码文件)
7.添加一个库:add_library(hello libHelloSLAM.cpp)
8.共享库:add_library(hello_shared SHARED libHelloSLAM.cpp)
9.链接:target_link_libraries(useHello hello_shared)
10.调用库:头文件(.h)+库文件(.a)
注:断点调试是指自己在程序的某一行设置一个断点,调试时,程序运行到这一行就会停住,然后你可以一步一步往下调试,调试过程中可以看各个变量当前的值,出错的话,调试到出错的代码行即显示错误,停下。
调试方法:
1)设置断点:在程序代码编辑框(能打代码的地方)外双击,就成功设置了一断点(可以看到有一点在那里)。
2)开始调试按F5,程序运行到断点之后,按F10就会执行当前程序行。
完整的CMakeLists.txt
Hello SLAM!
Hello SLAM 2017
Open CV的安装和编译
下载opencv-3.1.0.zip的压缩包。将它解压到任意目录下,我们发现 OpenCV 亦是一个 cmake 工程。事实上 OpenCV 的依赖项很多,缺少某些编译项会影响它的部分功能(不过我们也不会用到所有功能)。OpenCV 会在 cmake 阶段检查依赖项是否会安装,并调整自己的功能。在安装之后,OpenCV默认存储到你的/usr/local 目录下。
文件结构