[Bug 1958984] Re: libyaml-cpp.so.0.7: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_create(unsigned long&, unsigned long)@GLIBCXX_3.4.21'
Chris Halse Rogers
1958984 at bugs.launchpad.net
Wed Feb 16 07:18:58 UTC 2022
Ok. This would appear to be a ld bug. In a partially built tree, I get:
> /usr/bin/c++ -g -O2 -ffile-prefix-map=/home/chris/Canonical/Mir/mir/main/cmake-build-debug=. -flto=auto -ffat-lto-objects -flto=auto -ffat-lto-objects -fstack-protector-strong -Wformat -Werror=format-security -pthread -g -Wall -fno-strict-aliasing -pedantic -Wnon-virtual-dtor -Wextra -fPIC -Werror -Wno-mismatched-tags -Wno-psabi -g -Wl,-Bsymbolic-functions -flto=auto -ffat-lto-objects -flto=auto -Wl,-z,relro -Wl,--as-needed -Wl,--no-undefined examples/miral-system-compositor/CMakeFiles/miral-system-compositor.dir/system_compositor_main.cpp.o -o bin/miral-system-compositor.bin lib/libmiral.so.4 lib/libmircommon.so.8 lib/libmircookie.so.2 -lnettle /usr/lib/x86_64-linux-gnu/libboost_date_time.so.1.74.0 /usr/lib/x86_64-linux-gnu/libboost_program_options.so.1.74.0 /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.74.0 /usr/lib/x86_64-linux-gnu/libboost_iostreams.so.1.74.0 -ldl /usr/lib/x86_64-linux-gnu/libxkbcommon.so lib/libmircore.so.1 /usr/lib/x86_64-linux-gnu/libboost_system.so.1.74.0 -L/usr/lib/x86_64-linux-gnu -Wl,-rpath-link,/home/chris/Canonical/Mir/mir/main/cmake-build-debug/lib
/usr/bin/ld: /lib/x86_64-linux-gnu/libyaml-cpp.so.0.7: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_create(unsigned long&, unsigned long)@GLIBCXX_3.4.21'
collect2: error: ld returned 1 exit status
This symbol, with correct version, is defined in libstdc++.so.6:
objdump -T -C /lib/x86_64-linux-gnu/libstdc++.so.6 | rg "std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_create"
0000000000146910 w DF .text 000000000000005c GLIBCXX_3.4.21 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_create(unsigned long&, unsigned long)
Adding -fuse-ld=gold or -fuse-ld=lld to the command line results in a
successful link.
It doesn't seem to be a problem of the /usr/bin/c++ driver failing to
add libstdc++ to the link args, as manually adding -lstdc++ to the end
of the command doesn't change the output.
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to gcc-defaults in Ubuntu.
https://bugs.launchpad.net/bugs/1958984
Title:
libyaml-cpp.so.0.7: undefined reference to
`std::__cxx11::basic_string<char, std::char_traits<char>,
std::allocator<char> >::_M_create(unsigned long&, unsigned
long)@GLIBCXX_3.4.21'
Status in gcc-defaults package in Ubuntu:
New
Bug description:
After the most recent updates (11.2.0-14ubuntu1) mir started to FTBFS:
/usr/bin/c++ -g -O2 -ffile-prefix-map=/<<BUILDDIR>>/mir-2.6.0+dev100-gf11f678968=. -flto=auto -ffat-lto-objects -flto=auto -ffat-lto-objects -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -pthread -g -Wall -fno-strict-aliasing -pedantic -Wnon-virtual-dtor -Wextra -fPIC -Werror -Wno-mismatched-tags -Wno-psabi -flto -ffat-lto-objects -Wl,-Bsymbolic-functions -flto=auto -ffat-lto-objects -flto=auto -Wl,-z,relro -Wl,--as-needed -Wl,--no-undefined CMakeFiles/miral-system-compositor.dir/system_compositor_main.cpp.o -o ../../bin/miral-system-compositor.bin ../../lib/libmiral.so.4 ../../lib/libmircommon.so.8 ../../lib/libmircookie.so.2 -lnettle /usr/lib/x86_64-linux-gnu/libboost_date_time.so.1.74.0 /usr/lib/x86_64-linux-gnu/libboost_program_options.so.1.74.0 /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.74.0 /usr/lib/x86_64-linux-gnu/libboost_iostreams.so.1.74.0 -ldl /usr/lib/x86_64-linux-gnu/libxkbcommon.so ../../lib/libmircore.so.1 /usr/lib/x86_64-linux-gnu/libboost_system.so.1.74.0 -L/usr/lib/x86_64-linux-gnu -Wl,-rpath-link,/<<BUILDDIR>>/mir-2.6.0+dev100-gf11f678968/build-amd64/lib
/usr/bin/ld: /lib/x86_64-linux-gnu/libyaml-cpp.so.0.7: undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_create(unsigned long&, unsigned long)@GLIBCXX_3.4.21'
collect2: error: ld returned 1 exit status
Disabling LTO helps:
DEB_BUILD_MAINT_OPTIONS = optimization=-lto
ProblemType: Bug
DistroRelease: Ubuntu 22.04
Package: gcc 4:11.2.0-1ubuntu1
ProcVersionSignature: User Name 5.15.0-17.17-generic 5.15.12
Uname: Linux 5.15.0-17-generic aarch64
ApportVersion: 2.20.11-0ubuntu75
Architecture: arm64
CasperMD5CheckResult: unknown
Date: Tue Jan 25 13:54:49 2022
ProcEnviron:
TERM=screen-256color
PATH=(custom, no user)
XDG_RUNTIME_DIR=<set>
LANG=C.UTF-8
SHELL=/bin/bash
SourcePackage: gcc-defaults
UpgradeStatus: No upgrade log present (probably fresh install)
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/gcc-defaults/+bug/1958984/+subscriptions
More information about the foundations-bugs
mailing list