2017-02-13 43 views
0

我已经搜索了很多,没有任何解决方案,所以我想我会把它放在这里。Ubuntu到Centos的交叉编译错误GLIBCXX

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

每当我去运行我的应用程序,我收到一个错误说''GLIBCXX_3.4.21'找不到(需要....)“。当搜索我的CentOS的libstdC++。so.6时,我可以看到它只能到GLIBCXX_3.4.19。

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

回答

1

您将需要使用较旧的编译器和附带的libstdC++编译,至少与CentOS附带的GCC版本一样旧。

另一种方法是静态链接libgcc和libstdC++,虽然您有可能遇到与glibc相同的问题,但无法静态链接。话虽如此,glibc可能毁了这个选择。

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

另一个更正式的选择是使用[Linux LSB编译器] [1],它几乎可以让你在任何自我尊重的Linux发行版中兼容的基准。我不知道这种兼容性的程度,所以我不能与LSB分享任何经验,我只知道它的存在和目的。

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