0
点赞
收藏
分享

微信扫一扫

简单随机抽样之区间估计

认真的老去 03-30 12:30 阅读 1

背景

  • 在拿不到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环境中即可。
举报

相关推荐

0 条评论