Я пытаюсь установить glibc
на Alpine Linux.Я использую Alpine Linux в Docker.Вот шаги, которые я использую:
docker pull alpine
docker run -it alpine /bin/sh
apk add --no-cache make gcc linux-headers bsd-compat-headers gawk bison binutils coreutils diffutils gettext bash grep sed texinfo perl
wget https://ftp.gnu.org/gnu/glibc/glibc-2.28.tar.gz
tar -xzf glibc-2.28.tar.gz
cd glibc-2.28
mkdir glibc-build
cd glibc-build
../configure --prefix=/usr \
--disable-profile --enable-add-ons \
--libexecdir=/usr/bin --with-headers=/usr/include \
--enable-static-pie
cat > /etc/ld.so.conf << "EOF"
# Begin /etc/ld.so.conf
/usr/local/lib
/opt/lib
# End /etc/ld.so.conf
EOF
make
make install
Iя получаю следующую ошибку на шаге 11 :
/ usr / lib / gcc / x86_64-alpine-linux-musl / 6.4.0 /../../ ../../x86_64-alpine-linux-musl/bin/ld: невозможно найти -lssp_nonshared
collect2: ошибка: ld вернул 1 состояние выхода
make [2]: *** [Makefile: 129: /glibc-2.28/glibc-build/elf/sotruss-lib.so] Ошибка 1
make [2]: выход из каталога '/glibc-2.28/elf'
make [1]: *** [Makefile: 258: elf / subdir_lib] Ошибка 2
make [1]: выход из каталога '/glibc-2.28'
make: *** [Makefile: 9: all] Ошибка 2
Если я пытаюсь добавить флаг --disable-shared
, возникают другие ошибки.
Ошибка может быть устраненадобавив libc-dev
с помощью следующей команды: apk add --no-cache libc-dev
.Но таким образом у меня было бы две библиотеки C, но мне нужно, чтобы мое приложение специально использовало glibc
.
ОБНОВЛЕНИЕ
Если я запускаю apk add --no-cache libc-dev
, make
команда проходит успешно, но make install
завершается ошибкой со следующей ошибкой:
Ошибка выполнения gcc!
Сценарий обнаружил некоторые проблемы с вашей установкой!
Пожалуйстапрочитайте FAQ и файл README и проверьте следующее:
Вы изменили файл спецификации gcc (необходимо после обновления с Linux libc5)?
Существуют ли какие-либо символические ссылки в виде libXXX.so на старые библиотеки?
Ссылки типа libm.so -> libm.so.5 (где libm.so.5 - старая библиотека) неверны,
libm.so должен указывать на вновь установленный файл glibc - и
должна быть только одна такая ссылка (проверьте, например, / lib и / usr / lib)
Вы должны перезапустить этот скрипт из вашего каталога сборки после того, как вы исправите все проблемы!
Кстати.скрипт не работает, если вы устанавливаете GNU libc не как свою основную библиотеку!