
Dyer, Nigel wrote:
Hi
There is a problem with the 1.38 release of Boost that is preventing me from compiling using gcc on a mac some code that compiled correctly in previous releases. I now get lots of 'multiply defined' error messages when certain boost header files are included in specific ways, e.g.
/usr/libexec/gcc/i686-apple-darwin8/4.0.1/ld: multiple definitions of symbol boost::test_tools::(anonymous namespace)::check_is_close bin/darwin-4.0.1/release/link-static/threading-multi/Lexer/BiobaseLexer. o definition of boost::test_tools::(anonymous namespace)::check_is_close in section (__DATA,__common) bin/darwin-4.0.1/release/link-static/threading-multi/Lexer/ArrayLexer.o definition of boost::test_tools::(anonymous namespace)::check_is_close in section (__DATA,__common)
I have attached minimal example which seems to reproduce the problem.
It seems to be associated with the change that was introduced in svn release r49800. (https://svn.boost.org/trac/boost/changeset?new=49800%40trunk&old=49793% 40trunk)
I have run bjam -n -a with and without r49800 and also bjam with and without the r49800 change, which appears to show that the problem arises after the change has been introduced:
Hi Nigel, thanks for a comprehensive bug report. On the first look, it appears that Boost.Build change is actually right -- it fixes a previously introduced bug that made PCHs non-functional. And, then, it appears that including boost.test in PCH somehow upsets the compiler. Do things improve if you take all boost.test headers out of bio-pch.h? Thanks, Volodya P.S. Please don't ask new questions by replying to unrelated email, I've nearly missed this one.