将 Ubuntu 交叉编译到 Centos GLIBCXX 的错误



我已经搜索了很多,但没有任何解决方案,所以我想我会把它放在这里。

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

每次我去运行我的应用程序时,我都会收到一个错误,说"找不到'GLIBCXX_3.4.21'(需要....("。 在搜索我的 Centos libstdc++.so.6 时,我可以看到它只转到 GLIBCXX_3.4.19。

我怎样才能使用 libstdc++.so 版本在 Ubuntu 上编译我的代码,该版本止于 3.4.19,以便我可以轻松地在 Centos 7 上运行它?

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

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

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

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

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

最新更新