学习Pbrt 的第一条拦路虎,就是如何编译pbrt的源代码,做程序的人,大凡都有一个观点,一个东西无法运行,就很难相信它是正确的。
首先,必需声明笔者并没有编译成功,这里只是把自己的编译经验与大家一起分享一下,希望有志于 pbrt 学习的人一点帮助,如果有谁照此方法编译成功,请也告诉我一声。
首先,确保 ubuntu 有最基本的编译环境,如 gcc 之类的,就不说了。
然后,请仔细检查系统是否安装有如下的包
build-essential zlib1g zlib1g-dev ibopenexr6 libopenexr-dev libilmbase6 libilmbase-dev
然后,再检查这几个包 exrtools openexr openexr-viewers
然后,再修改 Makefile 文件中如下两行
EXRINCLUDE = -I/usr/local/include/OpenEXR to EXRINCLUDE = -I/usr/include/OpenEXR
EXRLIBDIR = -L/usr/local/lib to EXRLIBDIR = -L/usr/lib
之所以这样做,是因为 openExr 这个软件在 ubuntu 下的安装目录不一样
笔者,编译时,软件曾要求下面这几个包,不知所以,但装上后,可以继续编译下去,请安装下面这两个包
libc6-dev-amd64
lib64z1-dev
g++-multilib lib64stdc++6
最纠结的来了, pbrt2.0 使用的语法,词法分析器, lex 与 yacc 的版本比较高,编译时,老是提醒连接库版本不对,经过摸索,发现 yacc 请使 biso ++,至于 flex 应该使用什么版本还不清楚,这就靠大家自己尝试了,
不过一个好消息是,当你做了前面这些后,编译 2.0 以下的版本是没有问题的
Pbrt 路上,与你同行