wsnの博客

记录学习经历和一点点日常

0%

第一次作业

引言

这篇文章主要记录一下完成WMJ战队的第一次任务的过程,实在是跌宕起伏苦不堪言

由于本弱狗之前学过一点linux的内容,本来以为可以不用装系统了。但因为之前不太懂,下的东西太多,也调了一些莫名其妙的东西,导致我都ubuntu有两个用户三个桌面环境,而且经常性死机,只有重启才能变好。又因为我之前下的是16.04版本,据说ROS要18.04版本,所以我在被装不上OpenCV和电脑死机外加经常性缺失文件的折磨后,在昨晚决定重装系统。重装系统后感觉一切都变好了,顺顺利利的用了一上午的时间弄好。所以,重装系统可以解决100%的问题这句话是真理!!!

Ubuntu 18.04 安装

这里说一下我安装系统的过程,因为之前安装过,所以这次安装也轻车熟路,从下载到装好也就一个小时左右,基本没有什么问题,这里放一下我参考的教程:

Ubuntu18.04/20.04完整新手安装教程

这个教程写的很清楚,基本照着一步一步来就好了,我也是在这里才知道win10制作启动盘不用虚拟光驱,直接把ISO上的文件复制到U盘上就行了,这样要方便很多。

镜像下载

Ubuntu18.04的镜像我是在蒲公英上下载的,也就几分钟就下好了,这些都花了很少的时间,主要的时间花费是因为我反复确认了好多遍才敢继续操作(因为去年因为误操作把win10系统弄没了),所以才花了一个小时,不然可能半个小时就够了。

启动盘制作

就像教程里一样,准备一个8G及以上的U盘,直接双击打开下载好的ISO文件,将里面所有文件复制到U盘上就可以了。还要记得把U盘里的东西备份一下,因为要格式化。

分配空间

这一步很重要,我上次就是死在这里,装系统之前一定要分配空间。在计算机->管理->磁盘管理中进行操作,具体为右击你要分区的磁盘,旋测压缩卷,填入你要压缩的空间大小。这里我分了100G,根据个人需求合理分配就可以。

BIOS设置

进入BIOS

这个虽然对许多人没必要说,但我当时是真的不会,还因为这个自闭了好久,所以我还是决定说一下。BIOS在百度百科上的解释是:BIOS是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息。总而言之就谁很重要,也是你装系统必须要进的一个界面,要在这里设置BOOT。

进入BIOS的方法每个电脑都不一样,我都电脑是联想拯救者,开机前疯狂按F2就可以了。别的电脑不太清楚,建议自行百度一下。

修改启动项

进入BIOS后,点击方向箭头->,移动到Security,再按↓移动到Secure Boot上,点击回车键,选择Disable。

如图(这里直接贴教程里的图,因为我的电脑跟这个一样):

1

安装Ubuntu到电脑

终于到了这一步了,安装过程中千万不要拔U盘。

  1. 退出BIOS后,你的电脑应该会关机和重启,跟进入BIOS一样,在开机前疯狂摁F12,在出现的界面中选择你的U盘。这里要自行判断一下,最好在进入之前先在BIOS里看看有哪几个启动项,我就是因为不知道哪个是U盘重启了三遍(第一遍不知道,第二遍拔掉U盘看之前有啥,第三遍选择U盘)。

  2. 等待一会后就进入了Ubuntu,可以先试一试,如果觉得正常的话,就点击左上角的Install Ubuntu 18.04LTS。

    2

  3. 后面的东西没啥好说的了,就跟着一步一步来就可以了,建议看上面的教程,按着他说的选,分区方面,建议先看一下他后面的分区建议,分//home分区。

  4. 这样Ubuntu就安装好了,可以说是十分顺利

OpenCV安装

安装OpenCV是我最吃力的部分,可以说是这两天都花在这上面了,因为一直有各种各样的BUG。问题太多,以至于我一天搜了几百条问题,最后还是调好一个又出现一个,cmake编译一直过不了。最后直接重装了系统。

这里贴一下我的一部分错误,因为很多错误都没截图或者拍照:

2

7

然后再放一些我试过的教程链接:

ubuntu16.04 安装opencv3.4.0

ubuntu16.04安装opencv3.4.10

Ubuntu18.04安装OpenCV3.4.10

Ubuntu 18.04安装软件包下载速度慢的解决方案

Ubuntu 18.04 配置 OpenCV 3.4.5 并编写测试代码

这里还遇到一个问题就是下载opencv太慢总是下载失败,这个链接的方法是有用的。因为昨天晚上,也就是9.28晚上校园网有问题,所以我一直下载失败(其实已经好了),而我一直以为是我的问题,一直搞到一点多都没搞好,今天上午在教室一次就下好了qwq

最后配置成功的截图是这样的:

4

5

配置过程

安装cmake及opencv依赖包

1
2
3
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

下载OpenCV

这里建议一定要在官网上下,要不可能缺失文件导致cmke编译不通过,我就是因为下的太慢而在另一个教程里学的不知道怎么搞出了一个opencv文件夹,但因为缺少文件而一直编译出错。如果网速太慢请参考上面的链接,亲测有效。

安装OpenCV

  1. 解压下载的zip文件

  2. 编译安装Opencv

    • 进入解压得到的文件夹Opencv中

      cd opencv-3.4.10

    • 创建build文件夹并进入

      1
      mkdir build&cd build  
      • 编译

      编译完成后build文件夹下的lib文件夹会包含很多.so文件

      ..
      1
      2
      cmake ..
      make -j8 # j8 代表使用8个线程去并行编译
    • 安装

      sudo make install

设置opencv静态库加载路径

  1. 打开配置文件

    `sudo gedit /etc/ld.so.conf`
    
  2. 加入编译后lib文件夹路径,形式如下所示,但应做修改;

    include /home/***/opencv-3.4.10/build/lib

  3. 使配置文件生效。

    `sudo ldconfig`
    

其他安装

因为opencv装完后觉得其他的都很简单的所以就合在一起写。

cmake

在安装opencv的时候就安装过了,不过我想安装一下最新版本,所以就也搞了一下。

步骤如下:

  1. 文件下载和解压

    • 下载

      wget https://cmake.org/files/v3.18/cmake-3.18.3-Linux-x86_64.tar.gz

    • 解压

      tar zxvf cmake-3.18.3-Linux-x86_64.tar.gz

    • 查看解压后目录

      tree -L 2 cmake-3.12.2-Linux-x86_64

      cmake-3.12.2-Linux-x86_64
      ├── bin
      │ ├── ccmake
      │ ├── cmake
      │ ├── cmake-gui
      │ ├── cpack
      │ └── ctest
      ├── doc
      │ └── cmake
      ├── man
      │ ├── man1
      │ └── man7
      └── share
      ├── aclocal
      ├── applications
      ├── cmake-3.9
      ├── icons
      └── mime

      12 directories, 5 files

  2. 创建软链接

    1
    2
    mv cmake-3.18.3-Linux-x86_64 /opt/cmake-3.12.2
    ln -sf /opt/cmake-3.18.3/bin/* /usr/bin/
  3. 检查版本

    cmake --version

3

git

git安装也很简单主要是配置过程复杂一些。

安装

  1. 首先,通过运行以下命令确保您的系统和apt包列表完全更新:

    1
    2
    apt-get update -y
    apt-get upgrade -y
  2. 运行命令安装git

    1
    apt install git
  3. 检查git版本

    1
    git --version

配置

  1. 配置自己的名称和电子邮件地址

    1
    2
    git config --global user.name "linuxidc"//填用户名
    git config --global user.email "root@linuxidc.net"//填自己的邮箱
  2. 查看配置更改

    1
    git config --list
  3. 初始化

    1
    2
    git init
    git init newrepo
  4. 创建版本库

    1
    2
    3
    4
    5
    6
    7
    mkdir linuxmi //名字自己起
    cd linuxmi
    pwd //查看当前目录所在路径

    git init
    git add readme.txt //要先添加文件在文件夹内
    git commit readme.txt //提交
  5. 更多内容参考链接:git教程

boost

boost安装有一点麻烦,但相比opencv还是很简单,放一下我参考的教程:

Ubuntu18.04安装boost1.48.0

我根据这个装的boost 1.69.0版本

安装过程

  1. 安装boost依赖库

    1
    2
    3
    4
    apt-get install mpi-default-dev  #安装mpi库
    apt-get install libicu-dev  #支持正则表达式的UNICODE字符集
    apt-get install python-dev #需要python的话
    apt-get install libbz2-dev #如果编译出现错误:bzlib.h: No such file or directory
  2. 安装boost库

    • 解压压缩包

      从boost官网下载boost_1_69_0.tar.gz,然后解压

    • 执行配置文件

      1
      2
      cd boost_1_48_0
      sudo ./bootstrap.sh #默认路径为/usr/local

      在当前目录下生成b2和bjam可执行文件(两者一样)

    • 编译boost库

      1
      sudo ./b2 -a -sHAVE_ICU=1
    • 安装boost库

      1
      sudo ./b2 install
    • 设置动态库权限

      将新安装的动态库,设置成系统共享:

      1
      sudo ldconfig /usr/local/lib

      成功结果:没有出现 skip .. targets等非updated关键字

    • 注:安装过程跟上面的教程一样,教程中还有编译库过程中可能出现的错误,我没有碰到,所以就没写,有需要可以看一下那个。

  3. 测试boost库

    编写一个testBoost.cpp文件,内容如下

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    #include <boost/thread.hpp>
    #include <iostream>

    void task1() {
    // do stuff
    std::cout << "This is task1!" << std::endl;
    }

    void task2() {
    // do stuff
    std::cout << "This is task2!" << std::endl;
    }

    int main (int argc, char ** argv) {
    using namespace boost;
    thread thread_1 = thread(task1);
    thread thread_2 = thread(task2);

    // do other stuff
    thread_2.join();
    thread_1.join();
    return 0;
    }

    编译运行g++ -o testBoost testBoost.cpp -lboost_thread其中boost 库需放在.c或.cpp之后,否则链接不能通过

    这里我碰到一个错误,如图:

    6

    搜了好久之后,找到这样编译可以通过g++ -o testBoost testBoost.cpp -lboost_thread -L../boost/stage/lib -pthread

    具体我也不知道为啥,,网上也没搜到答案qwq