博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在centos上安装mitsuba
阅读量:5168 次
发布时间:2019-06-13

本文共 2671 字,大约阅读时间需要 8 分钟。

因为实验室的Xeon phi服务器使用的centos 6.4,mitsuba(0.50)的官方帮助文档没有提到centos系统下的源代码编译方式。

因为fedro和centos同源,我们按照官方文档中fedro的教程来安装。下面我写出一些,我在安装过程遇见的困难以及解决问题,整个过程相当的考验你定位、搜索、解决问题的能力,你必须非常的敏锐。

首先,安装依赖项的时会遇见点麻烦:

官方文档中,使用下列命令来安装依赖包:

sudo yum install mercurial gcc-c++ scons boost-devel qt4-devel OpenEXR-devel xerces-c-devel python-devel glew-devel libpng-devel libjpeg-devel collada-dom-devel eigen3-devel fftw3-devel

其中,boost如果使用scons编译时,如果提示找不到boost-thread,boost-system一类的问题时:

你需要使用命令:

#rpm -e boost-devel

#rpm -e boost

来卸载boost和boost-devel,再到boost官网下载source code,安装separately-compiled Boost libraries(动态链接库,系统自带的可能只含有头文件)。boost官方的帮助文档很详细,一步一步的来,不会有问题。

注意:如果你安装的boost是1.58,不知道在boost的哪个版本改动了phoenix模块的位置。原来的boost安装好后,phoenix在/usr/local/include/boost/spirit/home/下。而我安装好boost1.58后,编译mitsuba时出现找不到 /boost/spirit/home/phoenix/bind/bind_member_variable.hpp 的错误。你需要:

#cp /usr/local/include/boost/phoenix /usr/local/include/boost/spirit/home -r

 

不出意外,在成功编译好mitsuba后,你已然会得到找不到libboost_xx.xxx.so的错误。这是因为我们的boost的库文件安装到了/usr/local/lib下面。

执行:

#cat /etc/ld.so.conf

你会得到这样的信息:

include ld.so.conf.d/*.conf

再执行

#echo "/usr/local/lib" >> /etc/ld.so.conf

#ldconfig


 

继续,你会发现有一些安装包找不到

glew-devel collada-dom-devel eigen3-devel

这三个安装包使用yum install找不到安装包。

eigen3-devel很简单,到http://eigen.tuxfamily.org/index.php?title=Main_Page下载,按照官方帮助文档一步一步的来就行。编译,复制文件到/usr/local/include/eigen3即可。


 

glew-devel需要注意,mitsuba用了glewmx,所以,在编译时一定要加入附加编译选项install.all!否则,scons必然会告诉你,找不到-lGLEWMX。

大概过程是这样的,首先下载并解压好glew1.12.0后,

进入glew1.12.0/

#make clean

#make all

#make install.all


 

最糟糕的是collada-dom-devel,编译和安装过程恶心至极。

首先,你得安装Cg3,这个可以下载到rpm的安装包,直接使用rpm安装即可。

因为mitsuba只用到了minizip和dom,你不需要编译它的domtest,所以:

#vim (path_to_cllada-dom/)dom/make/common.mk

修改

ccFlags= -Wall -DNO_BOOST -DNO_ZAE

保存,退出。

然后依次执行:

#cp Makefile.linux Makefile

#make os=linux project=minizip parser=libxml -C dom

#make os=linux project=dom parser=libxml -C dom

注意,你编译dom的时候,可能会遇见compile error:

src/modules/LIBXMLPlugin/daeLIBXMLPlugin.cpp:457:65: error: ‘zipOpen64’ was not declared in this scope

src/modules/LIBXMLPlugin/daeLIBXMLPlugin.cpp:484:232: error: ‘zipOpenNewFileInZip3_64’ was not declared in this scope

我在这个地址找到了一点提示,http://sourceforge.net/p/collada-dom/bugs/154/

回答问题的人给出关键提示:"minizip-1.1" has the missing symbols for newer-format ZIP files, while "minizip" does not

minizip-1.1中有misssing symbols,而minizip没有。

所以,

#vim dom/make/dom.mk

修改其中的

# minizip

includeOpts += -Iexternal-libs/minizip/include

includeOpts += -Iexternal-libs/minizip-1.1  (没有/include)

保存,退出。

再次执行

#make os=linux project=dom parser=libxml -C dom

执行

#make install

OK,所有的依赖项都编译完了

 使用scons 你就能看到:scons: done building targets.

全文完。good luck!

 

转载于:https://www.cnblogs.com/wangpei0522/p/4539035.html

你可能感兴趣的文章
web of knowledge分析文献引用情况(引)
查看>>
matlab写入二进制文件注意事项
查看>>
mac ssh key 的获取 (转)
查看>>
Java 学习 day04
查看>>
Jobdu 1005
查看>>
webapi 给自己挖的坑
查看>>
linux —— ubuntu 初次安装问题
查看>>
传纸条
查看>>
济南清北学堂游记 Day 2.
查看>>
应届毕业生如何打破面试焦虑
查看>>
修改/etc/resolv.conf又恢复到原来的状态
查看>>
redhat6安装git出现的问题
查看>>
Excel 4.0宏躲避杀软检测(转)
查看>>
远程登录 - telnet、mstsc等工具的使用及遇到的问题
查看>>
springmvc的运行原理个人见解
查看>>
[转载]VC6中的文件后缀
查看>>
CUDA memory
查看>>
getnumdevices.c && setgetdevicetype例程
查看>>
《我们不一样》β冲刺_3
查看>>
tp框架-----Model模型层
查看>>