以下步骤从已经用VMware建立好虚拟机开始,ubuntu版本是16.04,是自己安装时一步步试错修改总结出来的步骤,希望能对大家有所帮助。
调整了各种库的安装顺序,保证依赖库都已经安装完成,并加入了自己遇到的问题和解决方案,重点参考了:链接1和链接2,其他参考链接也会进行标注。
请尽量按照以下顺序来进行安装配置,随意更改顺序会导致安装失败。
写在最前面的注意事项:
sudo apt-get upgrade
如果你在各个配置教程中遇到以上这个语句,一定要谨慎谨慎使用。因为它是更新所有安装库的语句,会导致升级后你很多库之间的版本不兼容,之后可能还要到处删除降版本。我这篇配置完全没有用到这个升级语句,版本兼容很重要,不要随便升级!
血的教训,真的慎用!
1、设置管理员密码,打开终端:
sudo passwd root
输入设置的密码后,将来通过:
su
密码
即可进入管理员模式,以下的步骤最好都进入管理员模式进行。
2、替换国内源
下载库时,官网有时候无法连接,导致很多库没安上,所以这里一定要换成国内的源,这里用的是阿里源,亲测可用,该部分参考链接。
备份原来的源:
sudo cp /etc/apt/sources.list /etc/apt/sources_init.list
打开包含源列表的文档:
sudo cp /etc/apt/sources.list /etc/apt/sources_init.list
将文档中所有内容清除替换为如下内容(不必担心,已经备份):
deb http://mirrors.aliyun.com/ubuntu/ xenial main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security universe
更新列表:
sudo apt-get update
3、调整虚拟机的字体,初始字体太小了。
参考链接,通过安装tweak工具,终端内输入:
sudo apt-get install unity-tweak-tool
随后在软件中搜索:unity-tweak
找到fonts,自己调节大小看看吧:
4、给虚拟机和主机设置共享文件夹,方便文件在二者之间传输使用。
vmware菜单栏-虚拟机-虚拟机设置-选项:
共享文件夹在虚拟机的/mnt/hgfs/share中。
注意,如果是要利用共享文件夹中的文件安装一些库,务必将文件复制到虚拟机之中再安装(总之不能在共享文件夹中安装)。
5、在官网安装最新版的cmake:
cmake官网,一定要是新版,不然安装其他库容易报错,参考:参考链接。
挑选一个压缩包下载,这里我选择的是cmake-3.16.0.tar.gz
这个版本太高了,后期我换成了15,不然clion用不了。但是glog要求cmake高于16,我只能换成新版clion。
下载后解压,进入解压后的文件夹,在该文件夹下打开终端,输入:
./bootstrap
make
sudo make install
中间没有报错即安装完成,可以验证一下是否成功:
cmake --version
以下语句代表成功:
之后我们就可以用cmake来编译运行程序了!
各种库版本的依赖真的是要了命,我这里反反复复试错。
6、安装eigen
eigen是SLAM中许多库文件的基础,务必安好,最好是安个最新版,下载链接,我这里直接用apt-get安装的,版本是 3.2.92,后期还需要升级。还好不用卸载,直接覆盖安装 ,(一定不要直接apt-get安装,这样安装的是3.2版本)
eigen至少3.3版本以上,模板类的Sophus对eigen版本有要求。Eigen库的版本可以在/usr/include/eigen3/Eigen/src/Core/util/Macros.h的前几行里找到。
安装后,为保证以后程序运行的方便,最好是找到eigen安装的位置。不是在/usr/local/include就是/usr/include,看看eigen3文件夹在这两个中的哪一个,然后把eigen3文件夹复制到另一个文件夹中去。
最好保证/usr/local/include和/usr/include两个路径下都有Eigen,这两个路径前者是本地安装库的路径,后者是直接apt-get安装库的路径,这样以后库的调取能省去找不到Eigen等问题。
7、安装opencv
opencv的版本要和eigen对应上,即两个不能一个太新一个太老。我的eigen版本是3.2.92(后期更新成3.3版本,opencv还可以用),安装的opencv最后选的是3.4.6,安装包下载:(链接 ,提取码:453q)
随后安装过程参考了:参考链接,安装之后的配置非常重要,不能省去。
(1)安装依赖:
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-dev
(2)随后解压opencv的压缩包,进入解压后的文件夹,在该路径下的终端输入:
mkdir build
cd build
cmake ..
make
sudo make install
(3)最后配置编译环境,将OpenCV的库添加到路径,从而可以让系统找到:
sudo gedit /etc/ld.so.conf.d/opencv.conf
(4)执行此命令后打开的可能是一个空白的文件,不用管,只需要在文件末尾添加:
/usr/local/lib
(5)执行如下命令使得刚才的配置路径生效:
sudo ldconfig
(6)配置bash:
sudo gedit /etc/bash.bashrc
(7)在打开文件的末尾添加:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
(8)保存,执行如下命令使得配置生效:
source /etc/bash.bashrc
(9)更新一下配置:
sudo updatedb
(10)进行测试,如果成功则配置完成。
进入opencv-3.4.6(就是下载的压缩包解压之后的文件夹,刚刚在这里mkdir build来着),找到如下路径:
opencv-3.4.6/smaples/cpp/example_cmake
终端输入:
mkdir build
cd build
cmake ..
make
运行opencv_example:
./opencv_example
如果电脑有摄像头,摄像头就会启动(我的笔记本摄像头开启会亮),这样就配置完成了。
注意,如果没开启摄像头也可能是虚拟机设置问题。
需要在VMware菜单栏-虚拟机-可移动设备-第五项camera-连接主机;
如果这个设置完成,运行刚刚的文件还是不能开启摄像头,那就要看看报错是什么了。(我一开始报错是因为安装完opencv后没进行后面的配置,重新安装配置之后就没有错误,成功运行了。)
8、安装git clone:
以便未来从github上下载源码,这里需要先去Github注册一个账号,并登录。
终端中输入(随便设个名字,填个邮箱就好):
git config --global user.name "Your Name"
git config --global user.email "[email protected]"
随后生成本地公钥/私钥,一路回车即可。
ssh-keygen -t rsa
再输入以下语句:
cat /home/.ssh/id_rsa.pub
在跳转出来的文本文档(也有可能直接在终端里)中,会有很长一串字符,请直接复制下来。(这里我已经配置过了,重新配置会覆盖,所以就没给大家截图)
登录github(地址),点击右上角的头像-setting-左侧的SSH and GPK keys-右边绿色按钮New SSH key:
title随便写个就好,然后把你复制的那一长串字符粘贴到下面Key的文本框里去,最后添加完成,就配置好了:
之后就可以在终端里用git clone https://github.com/…来下载github上的资源。
如果这个语句不好使,就把https换成git,即git clone git://github.com/…。
9、opengl(同样也是后面安装库的依赖库,务必安装成功)
这里参考了:参考链接
sudo apt-get install build-essential libgl1-mesa-dev
sudo apt-get install freeglut3-dev
sudo apt-get install libglew-dev libsdl2-dev libsdl2-image-dev libglm-dev libfreetype6-dev
sudo apt-get install libgl1-mesa-dev
sudo apt-get install libglu1-mesa-dev
sudo apt-get install freeglut3-dev
这里我遇到的问题就是sudo apt-get install freeglut3-dev这步,连接不到官网,所以前面一定要记得换成国内源。
测试代码,命名为test.cc
#include
void init(void)
{
glClearColor(0.0, 0.0, 0.0, 0.0);
glMatrixMode(GL_PROJECTION);
glOrtho(-5, 5, -5, 5, 5, 15);
glMatrixMode(GL_MODELVIEW);
gluLookAt(0, 0, 10, 0, 0, 0, 0, 1, 0);
return;
}
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0, 0, 0);
glutWireTeapot(3);
glFlush();
return;
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutInitWindowPosition(0, 0);
glutInitWindowSize(300, 300);
glutCreateWindow("OpenGL 3D View");
init();
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
终端内输入:
gcc -o test test.c -lGL -lGLU -lglut
./test
出现红色茶壶,即成功安装。
10、安装python
ubuntu16里内置了python2.7和python3.5,这里可以不用再特地安装,但是需要将3.5版本设置成默认版本,毕竟2.7太老啦,很少用。这里参考了:参考链接。
设置优先使用python3:
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150
然后还要安装一个python3.5的软件包才能成功运行python代码,终端输入:
sudo apt-get install python3.5-dev
11、安装Pangolin
这里我直接用SLAM十四讲第二版的代码里给的库文件安装的(在3rdparty里),进入Pangolin文件夹。
终端输入:
mkdir build
cd build
cmake ..
make
sudo make install
这里我遇到的bug就是各自依赖库没有安装,按照我这篇文章的顺序应该就不会遇到这种问题了。
12.0 安装fmt
这是新版模板类sophus需要的依赖。官网下载这个8.1.1版本的,git clone那个版本让我一直报错,下载链接这里。
cd fmt
mkdir build
cd build
cmake ..
make
sudo make install
12.1.安装sophus
直接用SLAM十四讲第二版的代码里给的库文件安装(在3rdparty里)模板类的sophus(git clone下载一个模板类的也可以,但是可能需要安装fmt,调整eigen版本什么的,我前面都已经提到,正常走到这里也安装的是无问题的版本),进入sophus文件夹。
终端输入:
#git clone https://github.com/strasdat/Sophus.git
cd Sophus
git checkout a621ff
mkdir build
cd build
cmake ..
make
sudo make install
这里虽然高博士说不用install,但是我运行程序会出错,还是要最后一步install一下。
(如果报fmt/core.h找不到的错,就是因为fmt没有安装。)
13、安装PCL
这里参考了:参考链接
终端输入:
sudo apt install -y \
libvtk6.2 \
libvtk6.2-qt \
libvtk6-dev \
libproj-dev
sudo apt-get install libpcl-dev pcl-tools
14、安装ceres
同样直接用SLAM十四讲第二版的代码里给的库文件安装(在3rdparty里),进入ceres-solver文件夹, 自己下载安装(链接),不然和sophus版本对应不上。终端输入:
sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3.1.4 libgflags-dev libgoogle-glog-dev libgtest-dev
mkdir build
cd build
cmake ..
make
sudo make install
本部分参考了:链接
15、安装g2o
同样直接用SLAM十四讲第二版的代码里给的库文件安装(在3rdparty里),进入g2o文件夹,该文件夹下终端输入:
sudo apt-get install libqt4-dev qt4-qmake libqglviewer-dev libsuitesparse-dev libcxsparse3.1.4 libcholmod3.0.6
mkdir build
cd build
cmake ..
make
sudo make install
16、安装DBow3
同样直接用SLAM十四讲第二版的代码里给的库文件安装(在3rdparty里),进入DBow3文件夹,该文件夹下终端输入:
mkdir build
cd build
cmake ..
make
sudo make install
如果报错,则将CMakeList.txt中的libDBow3.so改为libDBow3.a即可。
17.CLion安装
先安装java,jdk、jre啥的。参考链接
旧版本的Clion下载链接:链接
jdk版本要和Clion对应上,两个不能一个过新一个过老,我安装的是1.8的jdk,Clion安装的是2019.3版本。参考链接
一定要载这个带Bundled的,我一开始没注意,配置好久在找这个…
18、Ubuntu16安装中文输入法
参考链接:这里