我正在尝试安装glibc
在 Alpine Linux 上。我在 Docker 中运行 Alpine Linux。以下是我正在使用的步骤:
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
我收到以下错误11th step:
/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: 全部] 错误 2
如果我尝试添加--disable-shared
标志比另一个错误发生。
该错误可以通过添加来解决libc-dev
使用以下命令:apk add --no-cache libc-dev
。但这样我就会有两个 C 库,但我需要我的应用程序使用glibc
具体来说。
UPDATE
如果我跑apk add --no-cache libc-dev
, make
命令成功通过,但是make install
失败并出现以下错误:
gcc执行失败!
该脚本发现您的安装存在一些问题!
请阅读常见问题解答和自述文件并检查以下内容:
您是否更改了 gcc 规格文件(从
Linux libc5)?
-
是否有任何 libXXX.so 形式的符号链接到旧库?
像 libm.so -> libm.so.5 (其中 libm.so.5 是旧库)这样的链接是错误的,
libm.so 应该指向新安装的 glibc 文件 - 并且应该有
只有一个这样的链接(例如检查 /lib 和 /usr/lib)
您应该在完成后从构建目录重新启动此脚本
解决了所有问题!
顺便提一句。如果您安装的 GNU libc 不是您的版本,则该脚本将不起作用
初级图书馆!
最终,我改变了一些步骤来构建glibc
在 Alpine Linux 上。
以下是对我有用的步骤:
docker pull alpine
docker run -it alpine /bin/sh
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
apk add --no-cache make gcc gawk bison linux-headers libc-dev
../configure --prefix=/usr \
--disable-profile --enable-add-ons \
--libexecdir=/usr/lib --with-headers=/usr/include \
--without-cvs --enable-static-pie
cat > /etc/ld.so.conf << "EOF" # Begin /etc/ld.so.conf
/usr/local/lib
/opt/lib
/usr/lib
/usr/lib64
/usr/libexec
# End /etc/ld.so.conf
EOF
make
make install
我希望这些步骤也适用于其他人。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)