Я недавно обновил 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.
Я погуглил эту проблему, и похоже, что это - известная проблема. Все решения, что я считал предложенную фиксацию этого использования следующей команды:
export LC_ALL=C
Посмотрите, например, этого. Однако выполнение так повреждает шрифты комментариев относительно моего родного языка в VIM, например.
Так, это решение не подходит для меня-. Там какие-либо другие пути состоят в том, чтобы устранить эту проблему?
У меня была эта проблема на надежном человеке Ubuntu 14, я решил ее следующим образом.
Во-первых, редактирование /etc/locale.gen
и добавьте локали, которые Вы хотите.
Удостоверьтесь utf8
в локали имя является нижним регистром, не, например. UTF-8
.
Таким образом, мои:
en_US.utf8
ru_RU.utf8
Теперь выполненный, как корень:
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
для правильной формы.
Я добавил это в свой .bashrc, и это решило проблему для как Ubuntu 18, так и 20, когда у меня было одно и то же сообщение со старым 32-битным gdb для кросс-компилятора Arm
export LANG=C
Так просто:
export LC_ALL=C
а затем запустите команду. LC_ALL работает как запасной вариант, если что-то не установлено (например, LC_TIME в вашем случае)