【问题标题】:Build for older glibc为旧的 glibc 构建
【发布时间】:2018-03-15 14:47:32
【问题描述】:

我正在构建 32 位 c++ 库,它将在现代 Ubuntu 机器上的旧系统上运行。应用程序在 Ubuntu 上运行良好,但是当我转移到旧的 Centos 6.9 机器时出现错误:

Failed to open my lib: /usr/lib/libstdc++.so.6: version 'GLIBCXX_3.4.21' not found (required by /home/aaa/bbb/libme.so)

如何解决这个问题?如何为旧的 glibc 构建?

【问题讨论】:

  • 你试过在 Centos 6.9 上构建它吗?
  • 是的,它运行良好。但是我不能在那里开发,因为 GDB 在这个系统上太旧了。
  • 看起来你在 Centos 6.9 上没有 GLibc v 3.4.21。您是否尝试过将 gcc 降级到与 Centos 上可用的版本相同的版本?
  • GLIBCXX_3.4.21 :不是 glibc ! ... 'GLIBCXX_3.4.21' 是 gcc 版本 5.x 中 libstdc++.so.6 -> libstdc++.so.6.0.21 中的一个对象。

标签: c++ linux ubuntu glibc


【解决方案1】:

告诉编译器和链接器使用旧符号的唯一方法 版本是通过使用链接器脚本。但是,这需要您 为每个符号指定版本,这是可撤销的 任务。

您可以使用Holy Build Box

Holy Build Box 通过提供一个 包含旧版本的严格控制的构建环境 glibc。

【讨论】:

    猜你喜欢
    • 2018-12-19
    • 2021-05-09
    • 2016-06-27
    • 2019-08-03
    • 1970-01-01
    • 1970-01-01
    • 2012-04-08
    • 2023-03-23
    • 1970-01-01
    相关资源
    最近更新 更多