I'm hitting what looks like pr67478 (which is fixed by pr 68192). The example in PR67478 fails with the same error. However, I'm running g++ 5.3.0, so the issue should be fixed with my compiler. I can see the symbols in libstdc++.a as type L as expected. Do I need to compile g++ with some special option for this? TLS using the thread_local keyword works fine, it's just that the linker can't seem to find the symbols for call once: ld: 0711-317 ERROR: Undefined symbol: std::__once_callable ld: 0711-317 ERROR: Undefined symbol: std::__once_call ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information. collect2: error: ld returned 8 exit status Thanks!