在Centos系统上无sudo权限编译安装Matterport3D、OpenCV及jsoncpp

背景

  • 在拿不到sudo权限的linux服务器上要安装环境是非常麻烦的一件事情(意味着无法写入除了/home以外的其他根目录(如\usr,\etc等),也无法通过sudo apt-get install xxx来安装各种程序包,非常麻烦!),这里主要记录如何编译安装matterport3D Sim, opencvjsoncpp.
  • 基于Centos系统的超算中心很多库和依赖的安装方式是有异于ubuntu的,要格外注意安装相关依赖时的查询方式。
  • 常规安装matterport sim的过程请参见这篇博客
  • 友情提示:本文到最后还是联系了服务器管理员在sudo模式下装好了OpenGL的相关依赖,所以本篇攻略仅供参考

1. 编译安装OpenCV

  1. 首先到opencv官网下载所需的版本,我以3.4.16为例;
  2. /home目录下新建一个文件夹,用于一会作为opencv安装的目标目录,这里我的目录是~/env_install/opencv
  3. 在服务器端解压(假设解压出来的目录就是~/opencv-3.4.16);
  4. ctrl+T打开终端,新建build目录并进入:
cd opencv-3.4.16
mkdir build && cd build
  1. cmake (注意,这里我默认编译的是支持openGL)重点就是要替换这里的CMAKE_INSTALL_PREFIX 到刚才第2步新建的目录下:
sudo cmake -D WITH_OPENGL=ON -D WITH_GTK_2_X=ON -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=~/env_install/opencv..

稍作等待……
6. 编译:

make -j8

如果CPU核少的话就调小-j后面的数字
7. 安装:

make install 
  1. 添加路径:
vi ~/.bashrc

输入:在文件末尾加入:

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:~/env_install/opencv/lib64/pkgconfig
export PKG_CONFIG_PATH

Esc+:wq保存退出后,在终端输入:source ~/.bashrc
8. 检验opencv是否安装成功:

pkg-config opencv --modversion

如果出现安装opencv的版本号即成功√。

2. 安装Matterport3D Sim

  • 具体步骤我就不过多介绍了,大家可以点击这篇博客
  • 因为opencv没有安装在默认目录下,因此在cmake这步时会报错说找不到opencv的错误,此时只需要在CMakeLists.txt第17行的find_package(OpenCV REQUIRED)前添加如下一行路径申明即可:
set(OpenCV_DIR "~/opencv-3.4.16/build")
  • 然后就可以找到opencv了。然而此时又会遇到下一个错误:
Package 'jsoncpp', required by 'virtual:world', not found

这个错误如果有sudo权限是很好处理的,只需要sudo apt-get install libjsoncpp-dev就可以了。但是问题在于我们现在没有sudo权限

  • 编译安装jsoncpp:

    • 可以参考这篇文章:Linux下编译安装JsonCpp(1.9.4)最新版本
    • 新建一个jsoncpp目录,然后在该目录下获取jsoncpp源码:wget https://github.com/open-source-parsers/jsoncpp/archive/master.tar.gz
    • 解压:tar zxvf master.tar.gz 解压得到文件夹:jsoncpp/
    • 注意,这里就在jsoncpp/同级目录下,新建一个build目录:jsoncpp-build不要进入jsoncpp/下! 然后cd进jsoncpp-build/
    • 执行Cmake:cmake CMakeLists.txt 完成后make -j8 ,然后make install
    • 完成后可以看到jsoncpp-build/的同级目录下出现了include/lib64/ 目录。例如这里我的路径就是~/env_install/jsoncpp/include
    • 添加路径:vi ~/.bashrc
      添加如下内容后,保存退出,然后source ~/.bashrc
    export CMAKE_PREFIX_PATH=~/env_install/jsoncpp:$CMAKE_PREFIX_PATH
    export PKG_CONFIG_PATH=~/env_install/jsoncpp/lib64/pkgconfig:$PKG_CONFIG_PATH
    
  • 编译安装GLM

    • 可以参考这篇文章:ubuntu环境通过CMake安装glm
    • 安装完成后会出现目录~/env_install/glm (我的环境中),其中包含include, lib64, share三个文件夹。这里的路径就是后续直接修改头文件引用的路径!
  • 再往后继续编译安装Matterport3D Sim,但是又继续报错:没有epoxy库,找不到openGL依赖……好吧这两个没有sodu权限安装就比较困难了,遂放弃,还是联系了服务器管理员帮忙安装。但是因为系统是centos的,所以在安装openGL时遇到一些困难,主要表现在找不到/usr/lib/x86_64-gnu/libGL.so这个文件。
    -> 关键解决方法: 在gpu节点下cmake (我的环境中临时切换gpu节点指令如下,不通用:srun -p L40 -n 1 --gres=gpu:l40:8 --pty /bin/bash),且注意centos似乎是默认安装openGL在usr/lib/下,要么就联系管理员做下软链接。

  • 修改Matterport3DSimulator/include/MatterSim.hpp,和include/NavGraph.hpp,将其中所有关于opencv2,jsoncppglm的头文件都改成绝对路径(或者也可以通过修改系统路径的方式让gcc可以找到这些库的头文件,但是我没走通这条路就搁置了),例如:

    #include </xxx/env_install/opencv/include/opencv2/opencv.hpp>
    #include </xxx/env_install/glm/include/glm/glm.hpp>
    #include </xxx/env_install/jsoncpp/include/json/json.h>
    
  • 然后在build/ 目录下终端运行以下命令:

cmake -D OPENGL_opengl_LIBRARY=/usr/lib/x86_64-gnu/libGL.so -D PYTHON_EXECUTABLE=~/.conda/envs/xxx/bin/python -DEGL_RENDERING=ON ..
  • make:make -j8
  • 不报错的话就编译通过了。再把生成的两个.so文件复制到conda的site-packages环境中即可。

相关推荐

  1. CentOS 7 编译安装 Python 3.11

    2024-03-26 17:40:05       20 阅读
  2. Centos sudo权限错误

    2024-03-26 17:40:05       41 阅读
  3. 【MySQL 系列 CentOS 安装 MySQL

    2024-03-26 17:40:05       41 阅读
  4. CentOS 7 编译安装 Nginx 1.18

    2024-03-26 17:40:05       41 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-26 17:40:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-26 17:40:05       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-26 17:40:05       82 阅读
  4. Python语言-面向对象

    2024-03-26 17:40:05       91 阅读

热门阅读

  1. 自动驾驶的几种名词

    2024-03-26 17:40:05       39 阅读
  2. 深入探索Vue.js组件与插件技术

    2024-03-26 17:40:05       36 阅读
  3. springboot项目之间的feign调用

    2024-03-26 17:40:05       38 阅读
  4. Rust 实战练习 - 5. 多线程,多进程,协程

    2024-03-26 17:40:05       38 阅读
  5. 鸿蒙实现沉浸式全屏模式

    2024-03-26 17:40:05       66 阅读
  6. 网络问题排查方案

    2024-03-26 17:40:05       36 阅读
  7. 类模板与继承及成员、全局函数的实现

    2024-03-26 17:40:05       82 阅读