docker - 在Alpine Linux上构建glibc时出错

标签 docker glibc alpine

我正在尝试在Alpine Linux上安装glibc。我在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

  • 我在第11个步骤上遇到以下错误:

    /usr/lib/gcc/x86_64-alpine-linux-musl/6.4.0/../../../../x86_64-alpine-linux-musl/bin/ld: cannot find -lssp_nonshared

    collect2: error: ld returned 1 exit status

    make[2]: *** [Makefile:129: /glibc-2.28/glibc-build/elf/sotruss-lib.so] Error 1

    make[2]: Leaving directory '/glibc-2.28/elf'

    make[1]: *** [Makefile:258: elf/subdir_lib] Error 2

    make[1]: Leaving directory '/glibc-2.28'

    make: *** [Makefile:9: all] Error 2



    如果我尝试添加--disable-shared标志,则会发生另一个错误。

    通过使用以下命令添加libc-dev可以解决该错误:apk add --no-cache libc-dev。但是这样,我会有两个C库,但是我需要我的应用程序专门使用glibc

    更新

    如果我运行apk add --no-cache libc-devmake命令成功通过但make install失败,并出现以下错误:

    Execution of gcc failed!

    The script has found some problems with your installation!

    Please read the FAQ and the README file and check the following:

    • Did you change the gcc specs file (necessary after upgrading from Linux libc5)?

    • Are there any symbolic links of the form libXXX.so to old libraries?

      Links like libm.so -> libm.so.5 (where libm.so.5 is an old library) are wrong,

      libm.so should point to the newly installed glibc file - and there should be

      only one such link (check e.g. /lib and /usr/lib)

    You should restart this script from your build directory after you've fixed all problems!

    Btw. the script doesn't work if you're installing GNU libc not as your primary library!

    最佳答案

    最终,为了在Alpine Linux上构建glibc,我更改了一些步骤。

    以下是对我有用的步骤:

  • 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

  • 我希望这些步骤也对其他人也有用。

    关于docker - 在Alpine Linux上构建glibc时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52777220/

    相关文章:

    docker - 用于 Alpine 的轻量级 GCC

    linux - Linux 上的 docker-compose `host-gateway` 无法连接到 RPC (v20.10.1)

    linux - eval $(docker-machine env myvm1) 不切换到 shell 与 myvm1 对话

    postgresql - 无法检测默认用户名。请明确提供一个

    linux - glibc make 在 chroot 环境中失败

    gcc - 如何更改 crti.o 的 GCC 默认搜索目录?

    docker - 无法清理<无>存储库

    node.js - 错误 :/lib/x86_64-linux-gnu/libm. so.6:版本 `GLIBC_2.27'

    docker - Openshift - 使用 alpine、java 和 jmeter 运行基本容器

    docker - 如何使用 OpenRC (Alpine) 在 Docker 中自动启动服务?