
Hello, I try to build Parallel BGL in Ubuntu. I use gcc version 4.4.5, boost v1.46.1, openmpi v1.4.1-3ubuntu1. I believe my environment fulfills your requirements. Then I download parallel-bgl-0.7.0.tar.gz, and try to compile it, but I get some compilation errors. Below shows all my steps of compiling the library. cmake works fine. zhengda@zhengda-desktop:~/graph/parallel-bgl-0.7.0$ BOOST_ROOT=/home/zhengda/graph/boost_1_46_1 cmake . -- The C compiler identification is GNU -- The CXX compiler identification is GNU -- Check for working C compiler: /usr/bin/gcc -- Check for working C compiler: /usr/bin/gcc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working CXX compiler: /usr/bin/c++ -- Check for working CXX compiler: /usr/bin/c++ -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Found MPI: /usr/lib/libmpichcxx.so -- Boost version: 1.46.1 -- Found the following Boost libraries: -- mpi -- serialization -- filesystem -- system -- Configuring done -- Generating done -- Build files have been written to: /home/zhengda/graph/parallel-bgl-0.7.0 When I compile the code, it shows the following errors. zhengda@zhengda-desktop:~/graph/parallel-bgl-0.7.0$ make Scanning dependencies of target boost_graph_mpi [ 2%] Building CXX object libs/graph_parallel/src/CMakeFiles/boost_graph_mpi.dir/mpi_process_group.cpp.o In file included from /home/zhengda/graph/parallel-bgl-0.7.0/boost/graph/distributed/mpi_process_group.hpp:807, from /home/zhengda/graph/parallel-bgl-0.7.0/libs/graph_parallel/src/mpi_process_group.cpp:13: /home/zhengda/graph/parallel-bgl-0.7.0/boost/graph/distributed/detail/mpi_process_group.tpp: In function ‘int boost::graph::distributed::receive(const boost::graph::distributed::mpi_process_group&, int, int, T&)’: /home/zhengda/graph/parallel-bgl-0.7.0/boost/graph/distributed/detail/mpi_process_group.tpp:722: error: ‘stderr’ was not declared in this scope /home/zhengda/graph/parallel-bgl-0.7.0/boost/graph/distributed/detail/mpi_process_group.tpp:724: error: there are no arguments to ‘fprintf’ that depend on a template parameter, so a declaration of ‘fprintf’ must be available /home/zhengda/graph/parallel-bgl-0.7.0/boost/graph/distributed/detail/mpi_process_group.tpp:724: note: (if you use ‘-fpermissive’, G++ will accept your code, but allowing the use of an undeclared name is deprecated) /home/zhengda/graph/parallel-bgl-0.7.0/boost/graph/distributed/detail/mpi_process_group.tpp: In function ‘typename boost::enable_if<boost::mpi::is_mpi_datatype<T>, std::pair<int, unsigned int> >::type boost::graph::distributed::receive(const boost::graph::distributed::mpi_process_group&, int, int, T*, size_t)’: /home/zhengda/graph/parallel-bgl-0.7.0/boost/graph/distributed/detail/mpi_process_group.tpp:743: error: ‘stderr’ was not declared in this scope /home/zhengda/graph/parallel-bgl-0.7.0/boost/graph/distributed/detail/mpi_process_group.tpp:745: error: there are no arguments to ‘fprintf’ that depend on a template parameter, so a declaration of ‘fprintf’ must be available /home/zhengda/graph/parallel-bgl-0.7.0/boost/graph/distributed/detail/mpi_process_group.tpp: In function ‘int boost::graph::distributed::receive(const boost::graph::distributed::mpi_process_group&, int, int, T&) [with T = int]’: /home/zhengda/graph/parallel-bgl-0.7.0/boost/graph/distributed/detail/mpi_process_group.tpp:609: instantiated from ‘void boost::graph::distributed::mpi_process_group::global_trigger_launcher<Type, Handler>::receive(const boost::graph::distributed::mpi_process_group&, int, int, boost::graph::parallel::trigger_receive_context, int) const [with Type = int, Handler = void (*)(const boost::graph::distributed::mpi_process_group&, int, int, int, bool)]’ /home/zhengda/graph/parallel-bgl-0.7.0/libs/graph_parallel/src/mpi_process_group.cpp:1110: instantiated from here /home/zhengda/graph/parallel-bgl-0.7.0/boost/graph/distributed/detail/mpi_process_group.tpp:722: error: ‘fprintf’ was not declared in this scope /home/zhengda/graph/parallel-bgl-0.7.0/boost/graph/distributed/detail/mpi_process_group.tpp: In function ‘int boost::graph::distributed::receive(const boost::graph::distributed::mpi_process_group&, int, int, T&) [with T = boost::graph::distributed::mpi_process_group::outgoing_messages]’: /home/zhengda/graph/parallel-bgl-0.7.0/boost/graph/distributed/detail/mpi_process_group.tpp:609: instantiated from ‘void boost::graph::distributed::mpi_process_group::global_trigger_launcher<Type, Handler>::receive(const boost::graph::distributed::mpi_process_group&, int, int, boost::graph::parallel::trigger_receive_context, int) const [with Type = boost::graph::distributed::mpi_process_group::outgoing_messages, Handler = void (*)(const boost::graph::distributed::mpi_process_group&, int, int, boost::graph::distributed::mpi_process_group::outgoing_messages&, bool)]’ /home/zhengda/graph/parallel-bgl-0.7.0/libs/graph_parallel/src/mpi_process_group.cpp:1110: instantiated from here /home/zhengda/graph/parallel-bgl-0.7.0/boost/graph/distributed/detail/mpi_process_group.tpp:722: error: ‘fprintf’ was not declared in this scope make[2]: *** [libs/graph_parallel/src/CMakeFiles/boost_graph_mpi.dir/mpi_process_group.cpp.o] Error 1 make[1]: *** [libs/graph_parallel/src/CMakeFiles/boost_graph_mpi.dir/all] Error 2 make: *** [all] Error 2 So I modify boost/graph/distributed/detail/mpi_process_group.tpp, and insert "#include <stdio.h>". It seems the error above is solved, but I get a new error. This time I don't know how to fix this error. zhengda@zhengda-desktop:~/graph/parallel-bgl-0.7.0$ make [ 2%] Building CXX object libs/graph_parallel/src/CMakeFiles/boost_graph_mpi.dir/mpi_process_group.cpp.o [ 5%] Building CXX object libs/graph_parallel/src/CMakeFiles/boost_graph_mpi.dir/tag_allocator.cpp.o Linking CXX static library ../../../lib/libboost_graph_mpi.a [ 5%] Built target boost_graph_mpi Scanning dependencies of target adjlist_build_test [ 8%] Building CXX object libs/graph_parallel/test/CMakeFiles/adjlist_build_test.dir/adjlist_build_test.cpp.o In file included from /home/zhengda/graph/parallel-bgl-0.7.0/boost/graph/distributed/adjacency_list.hpp:3961, from /home/zhengda/graph/parallel-bgl-0.7.0/libs/graph_parallel/test/adjlist_build_test.cpp:10: /home/zhengda/graph/parallel-bgl-0.7.0/boost/graph/distributed/adjlist/serialization.hpp: In function ‘std::vector<int, std::allocator<int> > boost::detail::parallel::available_process_files(const std::string&)’: /home/zhengda/graph/parallel-bgl-0.7.0/boost/graph/distributed/adjlist/serialization.hpp:97: error: conversion from ‘boost::filesystem3::path’ to non-scalar type ‘std::string’ requested make[2]: *** [libs/graph_parallel/test/CMakeFiles/adjlist_build_test.dir/adjlist_build_test.cpp.o] Error 1 make[1]: *** [libs/graph_parallel/test/CMakeFiles/adjlist_build_test.dir/all] Error 2 make: *** [all] Error 2 Did I do something wrong? Why can I not compile the library? Thanks, Da