zoukankan      html  css  js  c++  java
  • 在centos上安装mitsuba

    因为实验室的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!

  • 相关阅读:
    HTML 语义化标签-新增标签介绍
    HTML基础知识点
    Android JSON 解析关键代码
    [USACO16DEC]Cities and States省市
    [洛谷P1835]素数密度
    [洛谷P1168]中位数
    [HNOI2008]越狱
    [HAOI2007]上升序列
    [SHOI2009]Booking 会场预约
    [洛谷P1892][codevs2597]团伙
  • 原文地址:https://www.cnblogs.com/wangpei0522/p/4539035.html
Copyright © 2011-2022 走看看