https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85732
--- Comment #6 from Jonathan Wakely <redi at gcc dot gnu.org> --- This isn't a libstdc++ bug, I get the same with a pure C program: $ cat loc.c #include <locale.h> #include <langinfo.h> #include <stdio.h> int main() { locale_t loc = newlocale(1 << LC_ALL, "en_US.UTF-8", 0); const char* ccurr = nl_langinfo_l(CURRENCY_SYMBOL, loc); printf("Currency symbol: %s\n", ccurr); return 0; } $ gcc -D_GNU_SOURCE loc.c $ ./a.out Currency symbol: $ $ gcc -D_GNU_SOURCE loc.c -static $ ./a.out Currency symbol: So this seems to be a glibc problem.