Ubuntu Linux基本操作+安装工具+安装ROS+g++编译+Cmake
1、进入到根目录
cd /
2、回到当前工作空间
cd ~
3、查看目录中的内容
ls
ll
4、创建文件夹
mkdir 123
5、删除文件夹
rm -rf 123/
这里我们在输入要删除的文件夹名时,可以通过按tab键快速补全对应的文件夹名。
按两次tab可查看对应输入名称的所有内容。
6、创建有连续子目录的文件夹
mkdir -p hh/pp
7、创建文件
touch hello.txt
8、打开txt
gedit hello.txt
9、删除文件
rm hello.txt
10、清空终端内容
clear
11、查看自己输入终端的内容
我们可以通过输入history查看自己之前终端输入的内容:
history
12、下载安装Ubuntu的安装包
这里以下载安装vscode为例
进入https://code.visualstudio.com/
下载Linux x64 .deb 文件,.deb就是Ubuntu对应的安装包。
我们在下载好安装包的文件夹中打开终端
dpkg -i code_1.74.2-1671533413_amd64.deb
但是这样是安装不了的,需要超级管理员权限。
在命令前添加sudo,管理员。
sudo dpkg -i code_1.74.2-1671533413_amd64.deb
之后输入密码
这样就安装好了:
13、apt安装工具进行更新
man + 基本命令 就可以查看基本的介绍:
man apt
首先更新一下apt源
sudo apt update
这里我们注意到更新的地址是通过Ubuntu的网址进行更新的,但是有时候我们无法登陆Ubuntu的网址进行下载,那么我们就需要更换成国内镜像源网址。
首先点击Software & Update:
之后点击下图的那个选择
之后点击下拉列表,选择other
之后我们选择镜像源网址即可,这里我们选择阿里云的
之后我们选择好后,关闭即可
我们在更新一下apt源
sudo apt update
可以注意到源换成了aliyun的了。
这样就更新了可以下载的软件列表了
14、apt安装git后克隆
用git工具克隆一些代码
那么我们就安装git
sudo apt install git
之后执行git的克隆:
git clone https://github.com/gaoxiang12/slambook2.git
我注意到,克隆的文件夹中第三方库是引用别人的形式,我们并没有克隆下来,文件夹是空的。
我们为了要将引用的第三课也一并下载下来,我们需要在克隆时添加一些参数。
即添加–recursive 递归,这样就能克隆下来引用的内容了。
git clone --recursive https://github.com/gaoxiang12/slambook2.git
可以注意到子模块的内容也被下载下来了。
如果我们发现引用的三方库没有能够成功下载下来,那么我就进行下面的方法:
cd 到 git clone的主目录下,执行下述命令即可。
git submodule update --init --recursive
15、其他工具
1、htop 相当于windows的任务管理器
sudo apt install htop
2、vim 文本编辑工具
vim hello.txt
之后点击键盘i,进入insert模式:
如果要退出该模式,按esc即可。
退出该模式后,我们要保存退出,就需要输入冒号,并输入wq。
:wq
表示写入并退出
3、terminator超级终端
sudo apt install terminator
安装好后,我们在按快捷键ctrl+alt+t打开的终端就是这个超级终端了。
该终端可以进行分栏,ctrl+shift+e,就可以左右分栏同时操作了。
按ctrl+shift+o,就可以上下分栏。
按住alt同时,按方向键,就可以选择栏进行写字了。
如果要同时操作所有栏,那就alt+a,全选所有栏进行操作,下面是全选后查看列表内容,可以同时对三个栏做ls操作,如果要退出全选,就alt+o退出全选。
如果我们要集中在一个分栏中进行输入内容,那么我就需要放大某一个栏,那么我们就输入ctrl+shift+x,就可以放大某一个栏了。如果想要恢复到原来所有分栏的状态,那么就再按一次ctrl+shift+x。
16、vscode配置
通过在项目路径中打开终端,输入一下内容,就可以打开vscode.
code .
之后安装一些C++对应的插件即可。
17、安装ros
首先,这个方法不是我发明的,详细请查看该链接:https://blog.csdn.net/LNSTOP/article/details/126599501
不管你是unbuntu 16\18\20,不管你是新安装的系统,还是ROS装了一部分进行不下去的烂摊子都适用!直接输入下面这一行代码,一键安装!!!!感谢开发这个的大神,向您献上最诚挚的祝福和最崇高的敬意!谢谢!!!
wget http://fishros.com/install -O fishros && . fishros
我们只需在终端输入上面的代码即可。按照对应选择,自动就能安装好ROS。
安装好后,我们来做一个简单的测试:
第一个终端:
roscore
第二个终端:
rosrun turtlesim turtlesim_node
第三个终端:
rosrun turtlesim turtle_teleop_key
之后在第三个终端中,注意这里必须是在第三个终端中,我们按键盘的上下左右可以控制小海龟的移动。
这样我们的ROS就安装成功了。
18、用g++编译
首先我们查看一个.cpp文件,用来简单输出Hello SLAM!
通过g++对该文件进行编译
g++ helloSLAM.cpp
可以发现多了一个a.out可执行文件,可执行文件是绿色的。
之后我们执行这个文件。输出Hello SLAM! 内容:
我还可以通过g++进行编译时,生成其他文件名的可执行程序:
g++ useHello.cpp libHelloSLAM.cpp -o sayhello
我们可以注意到这个sayhello是没有任何后缀的,但是依然是可以执行的,在Linux中,后缀名只是和文件打开形式有关,比如.txt打开是通过gedit打开,只和打开形式有关,我们可以通过ll查看该文件可以执行的情况,发现sayhello对应的最左侧是-rwxrwxr-x,其中x就是可以执行的。
我们可以改变该文件的执行类型,使得sayhello不能够被执行。
chmod -x sayhello
我们还可以添加回来
chmod +x sayhello
我们执行sayhello,输入内容是Hello SLAM。
19、cmake使用
这里我们注意到,我们只是添加了两个cpp进行编译,真正的工程可是有上百个cpp文件的。因此我们无法通过一行命令将其编译完成。我们需要一个项目管理工具,用来管理文件编译调用时的依赖项复杂的情况。
该工具为cmake,一般如果没有安装ROS是不会安装cmake的。
如果要安装:
sudo apt install cmake
因为我之前安装了ROS。
1、针对单一文件
我们看一下Cmakelists.txt
# 声明要求的 cmake 最低版本 这里最低版本的限制是可以不要的。
# cmake_minimum_required(VERSION 2.8)
# 声明一个 cmake 工程 这个是必须的。
project(HelloSLAM)
# 设置编译模式 这里的编译模式如果不写默认是release发行模式。
# set(CMAKE_BUILD_TYPE "Debug")
# 添加一个可执行程序
# 语法:add_executable( 程序名 源代码文件 ) 这里编译后生成的可执行文件名就是helloSLAM
add_executable(helloSLAM helloSLAM.cpp)
# 添加hello库
# add_library(hello libHelloSLAM.cpp)
# 共享库
# add_library(hello_shared SHARED libHelloSLAM.cpp)
# 添加可执行程序调用hello库中函数
# add_executable(useHello useHello.cpp)
# 将库文件链接到可执行程序上
# target_link_libraries(useHello hello_shared)
首先我们在终端输入
cmake .
这一步是用来生成Makefile文件的。
第二步,我们在终端输入
make
这一步就是用生成的Makefile文件来组织项目中cpp h 文件的编译。编译过程实际是在第二步执行的。
我们执行一下helloSLAM:
一般情况下,我们都会创建一个文件夹,叫build。在这个build文件夹中进行编译。
2、针对多文件引用库
1、静态库
先针对cpp文件生成一个库,这个静态库最后生成的叫做hello。
# 声明要求的 cmake 最低版本
# cmake_minimum_required(VERSION 2.8)
# 声明一个 cmake 工程
project(HelloSLAM)
# 设置编译模式
# set(CMAKE_BUILD_TYPE "Debug")
# 添加一个可执行程序
# 语法:add_executable( 程序名 源代码文件 )
# add_executable(helloSLAM helloSLAM.cpp)
# 添加hello库 先是静态库的名字 后面的是库的原文件。
add_library(hello libHelloSLAM.cpp)
# 共享库
# add_library(hello_shared SHARED libHelloSLAM.cpp)
# 添加可执行程序调用hello库中函数
# add_executable(useHello useHello.cpp)
# 将库文件链接到可执行程序上
# target_link_libraries(useHello hello_shared)
依然是在新建build文件夹,这个文件夹中输出这个库。
cmake ..
make
我们可以注意到生成的库是libhello.a静态库。
2、动态库
如果想让其生成动态库,Cmakelists.txt如下:
# 声明要求的 cmake 最低版本
# cmake_minimum_required(VERSION 2.8)
# 声明一个 cmake 工程
project(HelloSLAM)
# 设置编译模式
# set(CMAKE_BUILD_TYPE "Debug")
# 添加一个可执行程序
# 语法:add_executable( 程序名 源代码文件 )
# add_executable(helloSLAM helloSLAM.cpp)
# 添加hello库
# add_library(hello libHelloSLAM.cpp)
# 共享库 用于动态库
add_library(hello_shared SHARED libHelloSLAM.cpp)
# 添加可执行程序调用hello库中函数
# add_executable(useHello useHello.cpp)
# 将库文件链接到可执行程序上
# target_link_libraries(useHello hello_shared)
依然是在新建build文件夹,这个文件夹中输出这个库。
cmake ..
make
生成的是动态库.so
3、生成可执行文件
将可执行文件与生成的静态库连接到一起:
# 声明要求的 cmake 最低版本
# cmake_minimum_required(VERSION 2.8)
# 声明一个 cmake 工程
project(HelloSLAM)
# 设置编译模式
# set(CMAKE_BUILD_TYPE "Debug")
# 添加一个可执行程序
# 语法:add_executable( 程序名 源代码文件 )
# add_executable(helloSLAM helloSLAM.cpp)
# 添加hello库 生成静态库。
add_library(hello libHelloSLAM.cpp)
# 共享库
# add_library(hello_shared SHARED libHelloSLAM.cpp)
# 添加可执行程序调用hello库中函数 生成可执行文件。
add_executable(useHello useHello.cpp)
# 将库文件链接到可执行程序上 将静态库与可执行文件连接到一起。
target_link_libraries(useHello hello)
依然是在新建build文件夹,这个文件夹中输出这个库。
cmake ..
make
4、.h文件存放在其他文件夹中,需要在cmakelists.txt设置参数
这里如果.h文件放置到了其他文件夹中,cmakelists.txt就需要其他设置了。
添加include_directories(“include”)这句话:
# 声明要求的 cmake 最低版本
# cmake_minimum_required(VERSION 2.8)
#这里是用来添加.h文件夹存放搜索的文件夹
include_directories("include")
# 声明一个 cmake 工程
project(HelloSLAM)
# 设置编译模式
# set(CMAKE_BUILD_TYPE "Debug")
# 添加一个可执行程序
# 语法:add_executable( 程序名 源代码文件 )
# add_executable(helloSLAM helloSLAM.cpp)
# 添加hello库
add_library(hello libHelloSLAM.cpp)
# 共享库
# add_library(hello_shared SHARED libHelloSLAM.cpp)
# 添加可执行程序调用hello库中函数
add_executable(useHello useHello.cpp)
# 将库文件链接到可执行程序上
target_link_libraries(useHello hello)
5、.cpp文件存放在其他文件夹中,需要在cmakelists.txt设置参数
就是给添加hello库的源文件cpp指定到存放的文件夹中。
添加可执行程序调用hello库的cpp也需要指定文件夹。
# 声明要求的 cmake 最低版本
# cmake_minimum_required(VERSION 2.8)
#这里是用来添加.h文件夹存放搜索的文件夹
include_directories("include")
# 声明一个 cmake 工程
project(HelloSLAM)
# 设置编译模式
# set(CMAKE_BUILD_TYPE "Debug")
# 添加一个可执行程序
# 语法:add_executable( 程序名 源代码文件 )
# add_executable(helloSLAM helloSLAM.cpp)
# 添加hello库
add_library(hello ./src/libHelloSLAM.cpp)
# 共享库
# add_library(hello_shared SHARED libHelloSLAM.cpp)
# 添加可执行程序调用hello库中函数
add_executable(useHello ./src/useHello.cpp)
# 将库文件链接到可执行程序上
target_link_libraries(useHello hello)
如果要详细了解cmake就需要自行学习了。