【发布时间】:2019-03-17 13:10:30
【问题描述】:
我正在尝试在 Alpine Linux 上安装 glibc。我在 Docker 中运行 Alpine Linux。以下是我正在使用的步骤:
docker pull alpinedocker run -it alpine /bin/shapk add --no-cache make gcc linux-headers bsd-compat-headers gawk bison binutils coreutils diffutils gettext bash grep sed texinfo perlwget https://ftp.gnu.org/gnu/glibc/glibc-2.28.tar.gztar -xzf glibc-2.28.tar.gzcd glibc-2.28mkdir glibc-buildcd 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 makemake install
我在 第 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 执行失败!
脚本发现你的安装有问题!
请阅读常见问题解答和自述文件并检查以下内容:
您是否更改了 gcc 规范文件(从 Linux libc5)?
是否有任何 libXXX.so 形式的符号链接到旧库?
像 libm.so -> libm.so.5(其中 libm.so.5 是旧库)这样的链接是错误的,
libm.so 应该指向新安装的 glibc 文件——而且应该有
只有一个这样的链接(检查例如 /lib 和 /usr/lib)
你应该在你完成后从你的构建目录重新启动这个脚本 解决了所有问题!
顺便说一句。如果您安装的不是 GNU libc,则该脚本不起作用 主库!
【问题讨论】: