
Моя машина Linux — x86_64-redhat-linux.
Однако я использую другую цепочку инструментовaarch64-linux-gnu-gccна этой машине для сборки (мне не нужно запускать то, что я собираю, на этой машине, просто сборка, поэтому будет неплохо использовать arm toolchain для сборки)
Я получаю следующую ошибку:
aarch64-linux-gnu-gcc: /lib64/libc.so.6:
version `GLIBC_2.14' not found (required by aarch64-linux-gnu-gcc)
Итак, текущий путь к общей библиотеке по умолчанию указывает на /lib64/libc.so.6, я не хочу его обновлять, так как я не единственный пользователь этой машины. Как мне использовать свою собственную libc.so.6, могу ли я перенаправить путь поиска в другой каталог?
решение1
Проблема
Установлен GLIBC 2.12 и, как следует из заголовка OP, набор инструментов кросс-компиляции, который он пытается использоватьтребуетGLIBC >2.14. ОП утверждает, что он также ограничен, поскольку не может обновить систему.
Предостережения
Список ниже в шаге 3 используется для сборки changeroot. По возможности используйте пакеты, включенные из репозиториев дистрибутивов. Если последняя версия в вашем репозитории совпадает с версией, установленной вне changeroot, остановите шаг 3 и воспользуйтесь поиском пакетов в Интернете, напримерRPMНайтичтобы найти более новую версию и продолжить. Не устанавливайте новую или онлайн-версию вне changroot. Это приведет к поломке системы, за которую я НЕ несу ответственности!
Решение
Теперь ОП должен построитьизменить root тюрьмадля установки кросс-компилятора ARM, так как версии GLIBC не могут быть установлены Side By Side. Смотрите такжеВикипедия - Chroot. Для этого выполните следующие действия:
- Создайте каталог для changeroot:
mkdir -pv $HOME/newroot
- Создайте переопределение для перенаправления пакетов RPM для установки в chroot:
export ROOT=$HOME/newroot && echo $ROOT
. Если вам интересно, см. Шаг 4.- Пожалуйста, повторите новую переменную, так как она скоро станет очень важной.
- Загрузите рекомендуемые пакеты rpm для changeroot (вот названия пакетов):
cd $ROOT && mkdir -v download && cd download
- настраивать
- файловая система
- базоваясистема
- ldconfig
- глибк <--Обратите внимание на предостережение, изложенное выше, иначе вы проделали эту работу напрасно.
- mktemp
- termcap
- ncurses
- Информация
- fileutils
- bash && libtermcap
- гдбм
- тчш
- перл
- chkconfig
- текстовые утилиты
- крэклиб
- cracklib-dicts
- пвдб
- бойкий
- таращиться
- пам --nodeps
- shadow-утилиты
- сленг
- util-linux --nodeps
- sh-утилиты
- зш
- сед
- bzip2
- поп
- zlib
- об/мин
- Ваш набор инструментов кросс-компиляции и его зависимости
- Используйте следующую команду для установки списка выше .
rpm -i --root=$ROOT packagename
Обратите внимание на--root
аргумент. Это переопределяет поведение установки RPM по умолчанию. Обратите внимание на пакеты в списке с дополнениями, например, bash && libtermcap. Пожалуйста, выполните команду rpm -i, как указано в списке, включая аргумент--root
. В примере выше libtermcap устанавливается в тот же каталог, что и bash. - Наконец, можно
chroot $ROOT && export PS1="(chroot) $PS1"
.
Ссылка
Шаги выше адаптированы изКак настроить среду chroot с RedHat Linux 6.2 — для FTP и веб-сервисов