[boost] Linking Problems starting with Boost 1.81

11 views
Skip to first unread message

Dennis Luehring via Boost

unread,
Sep 5, 2023, 12:04:25 PM9/5/23
to bo...@lists.boost.org, Dennis Luehring
1.79 links with my software
1.80 links with my software
1.81 does not link
1.82 does not link
1.83 does not link

Linux up to date Suse/Tumbleweed gcc 13.2.1

./bootstrap.sh
./b2 -j16 --toolset=gcc cxxflags=-fPIC --build-dir=./_build
address-model=64 architecture=x86 threading=multi --stagedir=./lib64-gcc
--build-type=complete --layout=versioned --without-mpi

these are the errors on linking when using 1.81 and above

ld.lld: error: duplicate symbol: boost::phoenix::placeholders::uarg1
>>> defined at local_256.hpp:16
(/home/linux/dev/3rdparty-linux-gcc/boost_1_83_0/boost/preprocessor/iteration/detail/limits/local_256.hpp:16)
>>>
Recipe_expression_validator.cpp.o:(boost::phoenix::placeholders::uarg1)
in archive
../../implementation/expression_validation/libexpression_validation.a
>>> defined at local_256.hpp:16
(/home/linux/dev/3rdparty-linux-gcc/boost_1_83_0/boost/preprocessor/iteration/detail/limits/local_256.hpp:16)
>>>            parser.cpp.o:(.bss+0xF80) in archive
../../devs/expression_parser_lib/libexpression_parser_lib.a

ld.lld: error: duplicate symbol: boost::phoenix::placeholders::uarg2
>>> defined at local_256.hpp:19
(/home/linux/dev/3rdparty-linux-gcc/boost_1_83_0/boost/preprocessor/iteration/detail/limits/local_256.hpp:19)
>>>
Recipe_expression_validator.cpp.o:(boost::phoenix::placeholders::uarg2)
in archive
../../implementation/expression_validation/libexpression_validation.a
>>> defined at local_256.hpp:19
(/home/linux/dev/3rdparty-linux-gcc/boost_1_83_0/boost/preprocessor/iteration/detail/limits/local_256.hpp:19)
>>>            parser.cpp.o:(.bss+0xFC0) in archive
../../devs/expression_parser_lib/libexpression_parser_lib.a

ld.lld: error: duplicate symbol: boost::phoenix::placeholders::uarg3
>>> defined at local_256.hpp:22
(/home/linux/dev/3rdparty-linux-gcc/boost_1_83_0/boost/preprocessor/iteration/detail/limits/local_256.hpp:22)
>>>
Recipe_expression_validator.cpp.o:(boost::phoenix::placeholders::uarg3)
in archive
../../implementation/expression_validation/libexpression_validation.a
>>> defined at local_256.hpp:22
(/home/linux/dev/3rdparty-linux-gcc/boost_1_83_0/boost/preprocessor/iteration/detail/limits/local_256.hpp:22)
>>>            parser.cpp.o:(.bss+0x1000) in archive
../../devs/expression_parser_lib/libexpression_parser_lib.a

anyone got an idea what changed between 1.80 and 1.81 to let my linking
fail with the above errors
the expression_parser_lib and expression_validation is my own code

_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Soronel Haetir via Boost

unread,
Sep 5, 2023, 12:14:19 PM9/5/23
to bo...@lists.boost.org, Soronel Haetir
Have you made sure to remove all prior builds of your code? I've
gotten errors on windows systems with MSVC when I did not clear out
old builds (in my case the object resulting from the precompiled
header was polluted with stuff from the old version of boost).


--
Soronel Haetir
soronel...@gmail.com

Dennis Luehring via Boost

unread,
Sep 5, 2023, 12:35:37 PM9/5/23
to bo...@lists.boost.org, Dennis Luehring
Am 05.09.2023 um 18:14 schrieb Soronel Haetir via Boost:
> Have you made sure to remove all prior builds of your code? I've
> gotten errors on windows systems with MSVC when I did not clear out
> old builds (in my case the object resulting from the precompiled
> header was polluted with stuff from the old version of boost).

freshly build of boost, in different folders, fresh build with cmake
config etc., with complete delete of the build folder - definitly not a
problem

Peter Dimov via Boost

unread,
Sep 5, 2023, 12:46:07 PM9/5/23
to bo...@lists.boost.org, Peter Dimov
Dennis Luehring wrote:
> 1.79 links with my software
> 1.80 links with my software
> 1.81 does not link
> 1.82 does not link
> 1.83 does not link
>
> Linux up to date Suse/Tumbleweed gcc 13.2.1
>
> ./bootstrap.sh
> ./b2 -j16 --toolset=gcc cxxflags=-fPIC --build-dir=./_build
> address-model=64 architecture=x86 threading=multi --stagedir=./lib64-gcc
> --build-type=complete --layout=versioned --without-mpi
>
> these are the errors on linking when using 1.81 and above
>
> ld.lld: error: duplicate symbol: boost::phoenix::placeholders::uarg1
> >>> defined at local_256.hpp:16
> (/home/linux/dev/3rdparty-linux-
> gcc/boost_1_83_0/boost/preprocessor/iteration/detail/limits/local_256.hpp:
> 16)

Looks like this is being worked on, judging from

https://github.com/boostorg/phoenix/commit/665047aac26ad4d96b266d87504b3a88ad21b37e
https://github.com/boostorg/phoenix/commit/8913607a3788cb82d48ed461ea59c919b7bad3df
Reply all
Reply to author
Forward
0 new messages