Boost logo

Boost Users :

Subject: Re: [Boost-users] [MPI] missing symbols using serialization's static library design
From: Robert Ramey (ramey_at_[hidden])
Date: 2012-10-13 02:09:33


Barrett, Brian W wrote:
> Hello all -
>
> On Mac OS X Lion, we're seeing errors when linking our application
> using Boost.MPI. The application is rather large and uses
> Boost.Serialization for both checkpoint/restart and MPI
> communication. The checkpoint/restart bits made serialization a bit
> of a disaster in terms of compile times (due to headers including
> basically every other header in the project). To solve that problem,
> we followed the Boost.Serialization advice on static libraries, and
> all is good.
>
> Except that on Lion (and possibly elsewhere, but definitely on Lion)
> using the gcc front-end (i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1
> (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)), we're
> seeing link failures due to serialization calls for MPI archivers not
> being found when compiling with -O2 or higher on Boost 1.50.0 and
> 1.51.0:
>
> CXXLD sst.x
> Undefined symbols for architecture x86_64:
> "void
> SST::Introspector::serialize<boost::mpi::packed_iarchive>(boost::mpi::packe
> d_iarchive&, unsigned int)", referenced from:
> boost::archive::detail::iserializer<boost::mpi::packed_iarchive,
> SST::Introspector>::load_object_data(boost::archive::detail::basic_iarchive
> &, void*, unsigned int) const in introspectedComponent.o
> boost::archive::detail::iserializer<boost::mpi::packed_iarchive,
> SST::Introspector>::load_object_data(boost::archive::detail::basic_iarchive
> &, void*, unsigned int) consti n simulation.o
>
> While I could simply explicitly insatiate the missing archivers, that
> seems like a bad idea for something in the detail namespace and it
> appears that the list of archivers I'd need to instantiate has
> changed over time. Is there a better solution to the problem?
>
> There's a test case the exhibits the problem available here on our
> Google code project bug tracker. It's essentially the
> Boost.Serialization demo_pimpl example, but using MPI instead of a
> text archiver. The code is at:
>
>
> http://sst-simulator.googlecode.com/issues/attachment?aid=280000000&name=mp
> i_serialization_test.tar.gz&token=1MTkBuFrhrfUUAZRZYH3kZrElIg%3A13500682075
> 60
>

I'm guessing that one will need to explicitly initialilze some stuff in the
mpi archives static library.
This is done for the other serialization static libraries. I would compare
the mpi serialization
build against the other archive build and see which, if any explicit
instantiations are
in one but not the other.

> Thanks,
>
> Brian


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net