当我尝试在 Arch Linux 中使用 g++ 和 clang 编译程序时,遇到了一个非常神秘的错误。产生错误的最小程序是
#include <locale>
int main()
{
return 0;
}
如果我不包含locale
,错误就会消失。 (我最初在编译包含 的程序时发现了这一点iomanip
,其中包含locale
。)
我将错误消息保存到文件中铛和克++;这些有几兆字节大,所以我不会在这里复制它们。有很多关于“忽略空字符”的警告,并且我从程序中收到警告,/usr/bin/locale
指出某些源文件不是有效的 UTF-8。
我的区域设置设置为en_US.UTF-8
.这是以下的输出locale
:
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
我尝试过设置LC_ALL
;重新安装 binutils 和 coreutils;使用 localectl 再次设置区域设置;一切都没有效果。