Во время установки инструментальной цепи, когда glibc устанавливается, появляется сообщение об ошибке.

Вопрос или проблема

Во время установки цепочки инструментов, когда устанавливается glibc, возникает сообщение об ошибке

zic: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

Я проверил порядок сборки и установки пакетов из rpm в списке rpm. Он выглядит так:

binutils_cross gcc11_bootstrap glibc libstdc++_bootstrap binutils gcc11

После некоторого расследования я выяснил, что
libstdc++.so.6 устанавливается rpm-пакетом gcc11 вместе с libstdc++.so.6.0.24 и libstdc++.so.6.0.24-gdb.py.

И пока не наступает время установки glibc, libstdc++.so.6 нет в требуемом пути.

Ошибка сообщается, когда информация о часовом поясе компилируется командой ‘zic’, как указано в файле спецификаций glibc в разделе %post после %install

zic -L /dev/null -d $ZONEINFO $ZONEINFO/${tz}

Вопрос – Требуется ли zic, компилятор часовых поясов, действительно libstdc++.so.6 для компиляции информации о часовых поясах? Как я могу предоставить libstdc++.so.6 до установки rpm gcc11?

Я использую Linux openSUSE Leap 42.3

С уважением

Ответ или решение

В процессе установки инструментария, вы столкнулись с ошибкой, связанной с отсутствием библиотеки libstdc++.so.6, которая необходима во время выполнения команды zic, компилирующей информацию о временных зонах. Давайте разберемся, почему это происходит и как можно решить данную проблему.

Теория

zic — это компилятор временных зон, который обычно используется в процессе установки glibc для обработки временных данных. При этом он может зависеть от библиотек, которые обеспечивают корректное выполнение команд на вашей системе. В данном случае, ошибка связана с отсутствием библиотеки libstdc++.so.6, которую предоставляет пакет gcc11.

Проблема в порядке установки пакетов: библиотека libstdc++.so.6 устанавливается позже, чем необходима для выполнения zic. Именно это приводит к ошибке загрузки, так как zic не может найти нужную библиотеку на этапе компиляции временных зон.

Пример

Ваша последовательность установки пакетов из rpm выглядит следующим образом:

binutils_cross gcc11_bootstrap glibc libstdc++_bootstrap binutils gcc11

В этой последовательности библиотека libstdc++.so.6 устанавливается только на этапе установки gcc11, а не в момент установки glibc, где она требуется.

Применение

Для решения проблемы можно предпринять следующие шаги:

  1. Измените порядок установки пакетов: Убедитесь, что libstdc++.so.6 доступен до установки glibc. Это можно сделать, если переместить установку libstdc++_bootstrap или самих библиотеки libstdc++.so.6 в более ранний этап, до выполнения zic в процессе установки glibc.

  2. Используйте временное решение: Поскольку glibc требует эту библиотеку в процессе %post, можно временно скопировать необходимую библиотеку в нужное место вручную, а затем удалить после завершения установки.

  3. Убедитесь, что пути указаны правильно: Проверьте переменные окружения, такие как LD_LIBRARY_PATH, чтобы гарантировать, что устанавливаемая библиотека доступна zic.

Решение этой проблемы может потребовать настройки различных аспектов системы и порядка сборки пакетов, но, следуя данным рекомендациям, вы сможете устранить ошибку и обеспечить корректную установку инструментария.

Оцените материал
Добавить комментарий

Капча загружается...