Linking Problems starting with Boost 1.81
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
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).
On 9/5/23, Dennis Luehring via Boost
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 soronel.haetir@gmail.com
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
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
defined at local_256.hpp:16 (/home/linux/dev/3rdparty-linux- gcc/boost_1_83_0/boost/preprocessor/iteration/detail/limits/local_256.hpp:
ld.lld: error: duplicate symbol: boost::phoenix::placeholders::uarg1 16)
Looks like this is being worked on, judging from https://github.com/boostorg/phoenix/commit/665047aac26ad4d96b266d87504b3a88a... https://github.com/boostorg/phoenix/commit/8913607a3788cb82d48ed461ea59c919b...
Am 05.09.2023 um 18:45 schrieb Peter Dimov via Boost:
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 Looks like this is being worked on, judging from
https://github.com/boostorg/phoenix/commit/665047aac26ad4d96b266d87504b3a88a... https://github.com/boostorg/phoenix/commit/8913607a3788cb82d48ed461ea59c919b...
it seems that the fix tries are not working so far current develop 1.84 git from 2023/11/5 still got the problem https://github.com/boostorg/phoenix/issues/111 its the first time in all the years (+15) of boost using that there is bug that seems not to get fixed over serveral releases
On 11/5/23 09:44, Dennis Luehring via Boost wrote:
Am 05.09.2023 um 18:45 schrieb Peter Dimov via Boost:
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 Looks like this is being worked on, judging from
https://github.com/boostorg/phoenix/commit/665047aac26ad4d96b266d87504b3a88a... https://github.com/boostorg/phoenix/commit/8913607a3788cb82d48ed461ea59c919b...
it seems that the fix tries are not working so far current develop 1.84 git from 2023/11/5 still got the problem
https://github.com/boostorg/phoenix/issues/111
its the first time in all the years (+15) of boost using that there is bug that seems not to get fixed over serveral releases
One of the commits fixing this problem was not merged to master. It is now, and it should resolve the issue.
Am 05.11.2023 um 12:19 schrieb Andrey Semashev via Boost:
One of the commits fixing this problem was not merged to master. It is now, and it should resolve the issue.
so what is the "main" branch before release - develop or master? i was testing develop - so i should switch to master and there was a fix integration not comming from develop?
Dennis Luehring wrote:
Am 05.11.2023 um 12:19 schrieb Andrey Semashev via Boost:
One of the commits fixing this problem was not merged to master. It is now, and it should resolve the issue.
so what is the "main" branch before release - develop or master?
i was testing develop - so i should switch to master and there was a fix integration not comming from develop?
Make sure the boost/phoenix/stl/tuple.hpp file you're testing with looks like this https://github.com/boostorg/phoenix/blob/8913607a3788cb82d48ed461ea59c919b7b... because I don't see how you could get link errors for `uarg` if it's #ifdef-ed out. (The release branch is `master`.)
Am 05.11.2023 um 16:25 schrieb Peter Dimov via Boost:
Make sure the boost/phoenix/stl/tuple.hpp file you're testing with looks like this
https://github.com/boostorg/phoenix/blob/8913607a3788cb82d48ed461ea59c919b7b...
because I don't see how you could get link errors for `uarg` if it's #ifdef-ed out.
(The release branch is `master`.)
master works with my software - thanks very much for the info
participants (4)
-
Andrey Semashev
-
Dennis Luehring
-
Peter Dimov
-
Soronel Haetir