我使用的是VMware虚拟机新安装的centos6.5系统,没有安装任何软件,内存1G,处理器最少4个,少于4个,使用mitsuba命令时会报*** glibc detected *** double free or corruption (fasttop):错(具体参考http://www.cnblogs.com/colorfulkoala/archive/2012/09/12/2682601.html)
准备阶段(一些必不可少的软件安装)
#yum groupinstall 'Development Tools'
#yum install mercurial scons qt4-devel OpenEXR-devel xerces-c-devel python-devel libpng-devel libjpeg-devel fftw3-devel bzip2-devel readline-devel libxml2-devel
编译安装boost
(参考文章http://www.centoscn.com/image-text/install/2016/0416/7065.html)
(1)首先去官网下载boost源码安装包:http://www.boost.org/
选择下载对应的boost源码包。本次下载使用的是 boost_1_60_0.tar.gz
(2)解压文件:tar -xvf boost_1_60_0.tar.gz && rm -r boost_1_60_0.tar.gz
(3)进入源代码路径执行命令 ./bootstrap.sh --prefix=/usr/
这一条命令完成boost默认配置,当然编译boost是需要gcc 和 g++的支持的。如果没有gcc 和 g++可以执行命令:
yum install gcc gcc-c++ 安装gcc g++
这一条命令默认的安装路径配置为/usr/local/路径下。
也就是默认的boost头文件安装到/usr/local/include/文件夹下。boost库文件会安装到/usr/local/lib/文件夹下。安装完成之后你会在对应的文件夹下看到对应的文件。
安装到/usr目录下,后期就不需要拷贝或者设置路径了
(4)执行完上一条命令之后可以执行命令 ./b2 进行编译。(注意:编译需要耗费相当长的一段时间)
(5)然后执行下面安装命令
./b2 install 或者 ./bjam install
安装命令应该是管理员权限,因为需要到向系统中拷贝文件及库文件。
(6)测试test.cpp
#include <boost/thread.hpp>
#include <iostream>
void task1() {
std::cout << "This is task1!" << std::endl;
}
void task2() {
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);
thread_2.join();
thread_1.join();
return 0;
}
编译指令: #g++ test.cpp -o test -lboost_thread
可能的错误:./test: error while loading shared libraries: libboost_thread.so.1.56.0: cannot open shared object file: No such file or directory
这是因为要用到的库还没有更新到环境变量里,可以使用下面的命令更新:ldconfig
更新后,再执行./test,这样你就完成了你的第一个boost::thread程序
注意:如果你安装的boost是1.60,不知道在boost的哪个版本改动了phoenix模块的位置。原来的boost安装好后,phoenix在/usr/include/boost/spirit/home/下。而我安装好boost1.60后,编译mitsuba时出现找不到 /boost/spirit/home/phoenix/bind/bind_member_variable.hpp 的错误。你需要:
#cp -drfv /usr/include/boost/phoenix /usr/include/boost/spirit/home/
安装eigen3
到http://eigen.tuxfamily.org/index.php?title=Main_Page下载eigen-eigen-b9cd8366d4e8.tar.bz2
复制文件到/usr/include/即可
#tar xvf eigen-eigen-b9cd8366d4e8.tar.bz2 && rm -r eigen-eigen-b9cd8366d4e8.tar.bz2
#cd eigen-eigen-b9cd8366d4e8/
#cp -drfv Eigen /usr/include/
编译安装glew
需要注意,mitsuba用了glewmx,所以,在编译时一定要加入附加编译选项install.all!否则,scons必然会告诉你,找不到-lGLEWMX。
大概过程是这样的,首先下载并解压好glew后,
#make clean
#make all
#make install.all
安装Cg3
到网站https://developer.nvidia.com/cg-toolkit-download下载Cg Toolkit 3.1 - April 2012
这个可以下载到rpm的安装包,直接使用yum localinstall安装即可
编译安装collada-dom
因为mitsuba只用到了minizip和dom,你不需要编译它的domtest,所以:
#vim (path_to_cllada-dom/)dom/make/common.mk
修改
ccFlags= -Wall -DNO_BOOST -DNO_ZAE
保存,退出。
#vim dom/make/dom.mk
修改其中的
# minizip
includeOpts += -Iexternal-libs/minizip/include
为
includeOpts += -Iexternal-libs/minizip-1.1 (没有/include)
保存,退出。
然后依次执行:
#cp Makefile.linux Makefile
#make os=linux project=minizip parser=libxml -C dom
#make os=linux project=dom parser=libxml -C dom
报错:::src/dae/daeURI.cpp:16:21: error: pcrecpp.h: No such file or directory
原因:::缺失pcre
再次执行
#make os=linux project=dom parser=libxml -C dom
报错:::src/modules/LIBXMLPlugin/daeLIBXMLPlugin.cpp:25:30: error: libxml/xmlreader.h: No such file or directory
src/modules/LIBXMLPlugin/daeLIBXMLPlugin.cpp:26:30: error: libxml/xmlwriter.h: No such file or directory
src/modules/LIBXMLPlugin/daeLIBXMLPlugin.cpp:27:30: error: libxml/xmlmemory.h: No such file or directory
原因:::缺失libxml2
#yum install libxml2-devel
编译安装mitsuba
hg clone https://www.mitsuba-renderer.org/hg/mitsuba
cd mitsuba
cp build/config-linux-gcc.py config.py
scons
使用scons (这里会花费很长时间)你就能看到:scons: done building targets.成功!!!!!!!
source setpath.sh
mitsuba
然后你就可以看到