【问题标题】:Errors on cross-compiling Ubuntu to Centos GLIBCXX将 Ubuntu 交叉编译到 Centos GLIBCXX 时出错
【发布时间】:2017-02-13 22:29:59
【问题描述】:

我已经搜索了相当多的这个问题没有任何解决方案,所以我想我会把它放在这里。

我有在 Ubuntu 上编译得很好的源代码,我想在我的 Centos 7 机器上使用它。为了这个问题,我们假设在 Centos 上编译代码是完全不可能的。

每次我去运行我的应用程序时,我都会收到一条错误消息,提示“找不到'GLIBCXX_3.4.21'(由....要求)”。在搜索我的 Centos 的 libstdc++.so.6 时,我可以看到它只转到 GLIBCXX_3.4.19。

如何在 Ubuntu 上使用停止在 3.4.19 的 libstdc++.so 版本编译我的代码,以便我可以在 Centos 7 上轻松运行它?

【问题讨论】:

    标签: c++ linux ubuntu centos7


    【解决方案1】:

    您需要使用较旧的编译器和随附的 libstdc++ 进行构建,至少与 CentOS 附带的 GCC 版本一样旧。

    另一种方法是静态链接 libgcc 和 libstdc++,尽管您可能会遇到与 glibc 相同的问题,并且无法静态链接。话虽如此,glibc 很可能会毁掉这个替代方案。

    100% 确定的唯一“正确”方法是在 CentOS 主机上编译或让 sysroot 复制其基本系统布局。

    另一个更正式的替代方法是使用 [Linux LSB 编译器][1],它几乎为您提供了任何自尊的 Linux 发行版兼容的基线。虽然我不知道这种兼容性的程度,所以我不能分享任何关于 LSB 的经验,我只知道它的存在和目的。

    [1]https://wiki.linuxfoundation.org/en/Developers/LSB_Tutorial

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-13
      • 2014-01-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多