2015年(4)
分类: PERL
2015-04-01 16:04:17
因为工作中需要使用到graph的一些理论,需要对有向图进行遍历,考虑了两个选择,一个是使用perl的graph包,一个是使用基于boost库的boost::graph,但是后者在编译安装时报错,我分别在suse11sp3+gcc43,sp3+gcc44,前一个可以正常安装,后一个报错,但是因为我们的生产环境上还需要gcc44,所以好像有矛盾而不可能解决。不能使用yast安装libboost-graph,那个也有冲突。
后来问了一下google,发现有类似的问题,说是boost::graph使用了boost的c语言类,但是版本过低,是1.3.3的,而这个在高版本的gcc上不能编译通过。
看了一下boost::graph的那个包,其中有一个boost的,猜它就是内嵌的boost,下载boost1.5.7,安装其中的graph,但是又提示部分h文件有问题,看了一下头文件的时间,大约都是06年的,这个肯定与新的boost不相符合,再猜想一下。在网上的问题答复中说,,这个地址中有比较新的一个版本,名字是Boost-Graph-master,下来发现,大小很小,而且没有boost这个目录,正好把boost1.5.7编译的结果放进去,编译通过。太佩服自己了。
boost1.5.7的编译比较简单,
./bootstrap.sh --with-libraries=graph
如果
./bootstrap.sh
是编译所有的包,这个我们用不着那么多。
- atomic : building
- chrono : building
- container : building
- context : building
- coroutine : building
- date_time : building
- exception : building
- filesystem : building
- graph : not building
- graph_parallel : building
- iostreams : building
- locale : building
- log : building
- math : building
- mpi : building
- program_options : building
- python : building
- random : building
- regex : building
- serialization : building
- signals : building
- system : building
- test : building
- thread : building
- timer : building
- wave : building
然后使用:
./b2
其中graph_parallel 和graph都需要编译一下。
./bootstrap.sh --with-libraries=graph_parallel
然后将boost1.5.7下的boost目录复制到Boost-Graph-master目录下,并在这个目录中开始安装
perl Makefile.PL
make
make install
有warning,但是没有关系。测试通过。cpan上的那个模块,就不要安装了。