[Bug libstdc++/58909] C++11's condition variables fail with static linking

glisse at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Jul 22 08:10:27 GMT 2021


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58909

--- Comment #25 from Marc Glisse <glisse at gcc dot gnu.org> ---
Note that this also affects dynamic linking with -Wl,--as-needed (which some
platforms use by default).

#include <mutex>
int main(){
  std::once_flag o;
  std::call_once(o, [](){});
}

$ g++ b.cc -lpthread && ldd ./a.out            
        linux-vdso.so.1 (0x00007ffca7b60000)
        libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6
(0x00007f9c809ac000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f9c807e7000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f9c806a3000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f9c80bd4000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1
(0x00007f9c80689000)

No libpthread there :-(

(using -pthread instead of -lpthread works, but some build systems like cmake
use -lpthread by default)


More information about the Gcc-bugs mailing list