赞
踩
/home
以外的其他根目录(如\usr
,\etc
等),也无法通过sudo apt-get install xxx
来安装各种程序包,非常麻烦!),这里主要记录如何编译安装matterport3D Sim
, opencv
和jsoncpp
.matterport sim
的过程请参见这篇博客。OpenGL
的相关依赖,所以本篇攻略仅供参考。/home
目录下新建一个文件夹,用于一会作为opencv安装的目标目录,这里我的目录是~/env_install/opencv
;~/opencv-3.4.16
);ctrl+T
打开终端,新建build
目录并进入:cd opencv-3.4.16
mkdir build && cd build
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
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的版本号即成功√。
cmake
这步时会报错说找不到opencv的错误,此时只需要在CMakeLists.txt
第17行的find_package(OpenCV REQUIRED)
前添加如下一行路径申明即可:set(OpenCV_DIR "~/opencv-3.4.16/build")
Package 'jsoncpp', required by 'virtual:world', not found
这个错误如果有sudo权限是很好处理的,只需要sudo apt-get install libjsoncpp-dev
就可以了。但是问题在于我们现在没有sudo权限!
编译安装jsoncpp:
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 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
~/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
,jsoncpp
和glm
的头文件都改成绝对路径(或者也可以通过修改系统路径的方式让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 -j8
.so
文件复制到conda的site-packages
环境中即可。Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。