我最近将 Ubuntu 更新到了 18.04。此后,发出命令ld
不断失败,并出现以下断言:
loadlocale.c:129: _nl_intern_locale_data: Assertion `cnt < (sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))' failed.
我用 Google 搜索了这个问题,看起来这是一个众所周知的问题。我读过的所有解决方案都建议使用以下命令修复此问题:
export LC_ALL=C
例如,参见这个但是,这样做会破坏我的母语中 VIM 注释的字体。
所以,这个解决方案不适合我-。还有其他方法可以解决这个问题吗?
答案1
一样容易:
export LC_ALL=C
然后运行命令。如果未设置某些内容(例如您的情况中的 LC_TIME),则 LC_ALL 可作为后备
答案2
我在 Ubuntu 14 trusty 上遇到了这个问题,我按如下方式解决了它。
首先,编辑/etc/locale.gen
并添加您想要的语言环境。
确保utf8
语言环境名称中的是小写的,而不是例如UTF-8
。
所以我的是:
en_US.utf8
ru_RU.utf8
现在以 root 身份运行:
rm -f /usr/lib/locale/locale-archive
locale-gen --no-archive
locale-gen --no-archive en_US.utf8
locale-gen --no-archive ru_RU.utf8
国旗--no-archive
很重要。
现在确保在您的启动文件(如~/.bash_profile
等)中将相关变量~/.bashrc
设置LANG
为小写utf8
形式,请参阅目录中的/usr/lib/locale
正确形式。
答案3
我将其添加到我的 .bashrc 中,它修复了 Ubuntu 18 和 20 中的问题,当时我使用旧的 32 位 gdb 为 Arm 交叉编译器遇到了同样的消息
导出 LANG=C