在 Alpine Linux 上构建 glibc 时出错

2023-12-08

我正在尝试安装glibc在 Alpine Linux 上。我在 Docker 中运行 Alpine Linux。以下是我正在使用的步骤:

  1. docker pull alpine
  2. docker run -it alpine /bin/sh
  3. apk add --no-cache make gcc linux-headers bsd-compat-headers gawk bison binutils coreutils diffutils gettext bash grep sed texinfo perl
  4. wget https://ftp.gnu.org/gnu/glibc/glibc-2.28.tar.gz
  5. tar -xzf glibc-2.28.tar.gz
  6. cd glibc-2.28
  7. mkdir glibc-build
  8. cd glibc-build
  9. ../configure --prefix=/usr \ --disable-profile --enable-add-ons \ --libexecdir=/usr/bin --with-headers=/usr/include \ --enable-static-pie
  10. cat > /etc/ld.so.conf << "EOF"

    # Begin /etc/ld.so.conf
    
    /usr/local/lib
    /opt/lib
    
    # End /etc/ld.so.conf
    EOF
    
  11. make

  12. 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 上。

以下是对我有用的步骤:

  1. docker pull alpine
  2. docker run -it alpine /bin/sh
  3. wget https://ftp.gnu.org/gnu/glibc/glibc-2.28.tar.gz
  4. tar -xzf glibc-2.28.tar.gz
  5. cd glibc-2.28
  6. mkdir glibc-build
  7. cd glibc-build
  8. apk add --no-cache make gcc gawk bison linux-headers libc-dev
  9. ../configure --prefix=/usr \ --disable-profile --enable-add-ons \ --libexecdir=/usr/lib --with-headers=/usr/include \ --without-cvs --enable-static-pie
  10. 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
  11. make
  12. make install

我希望这些步骤也适用于其他人。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Alpine Linux 上构建 glibc 时出错 的相关文章

随机推荐

  • 更改生命周期映射中的默认 mojo 配置

    我正在编写一个 Maven 3 插件 它为另一个应用程序构建插件 插件基本上是一个带有一些奇特清单的 JAR 文件 编译后的类需要进行后处理 以便插件能够与主机应用程序的生产版本一起使用 不幸的是 该插件的处理版本无法与主机的调试版本一起使
  • java.lang.RuntimeException:找不到 FacesContext(JSF 1.2 + Primefaces + Tomcat 6)[重复]

    这个问题在这里已经有答案了 当尝试在 Tomcat 6 上运行我的项目时 我遇到了这个问题 SEVERE Servlet service for servlet jsp threw exception java lang RuntimeEx
  • 为什么垃圾收集器不收集任务对象

    特别是当没有活动线程引用它时 我认为 GC 会考虑所有 net 线程来查找引用 它也会检查其他地方的引用吗 编辑 例如 让我们假设我们在一个控制台应用程序中 main 调用一个创建本地task1 的方法 然后应用task1 Continue
  • 按值“名称”合并 2 个 CSV 并合并计数 (Powershell)

    所以目前我正在寻找一种合并 2 个 CSV 文件的方法 这是我的意思的一个例子 CSV1 Name Count Klaus 3 Hans 2 Gerhard 1 Nina 6 Julia 10 Caro 19 CSV2 Name Count
  • 从 Python 控制 Libreoffice Impress

    我正在编写一个面向演讲者和会议的应用程序 我用 Python 编写并专注于 Linux 我想知道是否可以在 Linux 下使用 Python 以某种方式控制 LibreOffice Impress 我想从我的 Python 应用程序启动一个
  • iBeacon每1分钟不断进入和退出区域

    当 iBeacon 使用 Kontakt Beacon 在后台模式下进入某个区域时 我设法获得本地通知 同时 我监控 3 个具有特定且唯一标识符的信标区域 每个区域具有相同的 UUID 但具有唯一的主要和次要组合 在锁屏模式下 我的应用程序
  • C# 文本框显示以前写的文本

    例如 如果您访问 Facebook 并双击登录文本框 则会出现一些以前有人写过的登录信息 有什么方法可以在 C 文本框中生成以前输入的下拉菜单吗 我不想要组合框 See the 文本框 自动完成模式 and 文本框 自动完成源文本框的属性
  • PHP不会显示任何错误

    这是我的代码 echo foo error reporting E ALL echo this line doesnt end in a semi colon echo i should get an error here 当我运行这个时
  • PDF - Adob​​e 数字版

    我想使用 Adob e Digital Edition 保护 pdf 文档 我认为它目前被用来保护电子书以防止非法流通 任何人都可以对此有所了解吗 是否可以使用 C 或其他东西来做到这一点 您可能想看看Adobe 内容服务器和Adobe数字
  • 原子最大+原子CAS(atomicExch)

    我想问一下大家是否有更好的方法来组合2个原子 我的目标是在 J 个参数值列表 非常类似于 2 路输入 下找到一组 K 个方程 超过 32 个 的最高结果 并保存该值和 j 索引 if atomicMax max k id t max lt
  • 在 SQL Server 中禁用打印

    我有一个包含许多调试消息的脚本 这些消息由PRINT功能 有什么办法可以禁用该消息吗 我想到了类似的事情SET NOCOUNT ON 但用于用户消息 我喜欢在我的脚本 SP 中设置一个变量 Debug tinyint 默认 将其设置为 0
  • Android 如何以编程方式打开请勿打扰(dnd)

    如何在 Android 中以编程方式打开 关闭 请勿打扰 dnd 我希望这能给我一些东西 但事实并非如此 Settings System putInt getContentResolver Settings System DO NOT DI
  • 通过对象数组中的ID字段将字段值收集到数组中

    我无法修改 JSON 文件 尝试使用我所有关于循环 map filter 和条件 if else JavaScript 的知识 但什么也没有出来 请告诉我如何从此文件制作这样的文件 model 2002R Protection Pack M
  • LinearLayout 只允许添加一个视图

    layout new LinearLayout this addContentView layout new LayoutParams LayoutParams FILL PARENT LayoutParams WRAP CONTENT B
  • 如何使我的“显示和隐藏行”脚本在 Google 表格中正常运行

    我试图在 谷歌表格 工作表 Info Pull 中有一个脚本 根据 C 列的内容显示 隐藏行 目前我正在 C 列中运行以下公式 if or len H47 gt 0 len I47 gt 0 len J47 gt 0 len K47 gt
  • 无法在 ImageView 中显示来自 Firebase 存储的图像

    我有一个应用程序 允许用户将图像上传到 Firebase 存储桶 然后我获取图像文件的下载 URL 并将其添加到 Firebase 数据库中 URL 的形式为 https firebasestorage googleapis com v0
  • Python 格式抛出 KeyError

    以下代码片段 template function routes app model app get preNew className function req res res render className ejs
  • jQuery Knob 使用 animate 更新值

    我正在尝试使用 jQuery Knob 构建时钟 我的时钟正在工作 http jsfiddle net Misiu 9Whck 1 但现在我正在尝试添加一些额外的内容 一开始我想将所有旋钮设置为 0 然后使用animate我想将它们的值设置
  • 在先前的 Activity 之上显示新的 Activity,但仅部分覆盖先前的 Activity

    我有一个活动 A 它有一个 向下 按钮 见上图 当我按下此按钮时 我想在 Activity A 之上启动 Activity B 以便底部的 Activity A 的一些内容仍然可见 Activity B 可以依次启动许多其他 Activit
  • 在 Alpine Linux 上构建 glibc 时出错

    我正在尝试安装glibc在 Alpine Linux 上 我在 Docker 中运行 Alpine Linux 以下是我正在使用的步骤 docker pull alpine docker run it alpine bin sh apk a