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 Bugs, which is subscribed to 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' To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/gcc-defaults/+bug/1958984/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs