我没有任何解决方案来搜索这个问题,所以我想我会把它放在这里。
我的源代码在Ubuntu上编译得非常好,我想在我的Centos 7机器上使用它。为了这个问题,我们假设在Centos上编译代码是完全不可能的。
每次我去运行我的应用程序时,都会收到一条错误消息"' GLIBCXX_3.4.21'找不到(需要......)"。在我的Centos'中搜索时libstdc ++。so.6,我可以看到它只适用于GLIBCXX_3.4.19。
如何使用libstdc ++在Ubuntu上编译我的代码。所以版本停在3.4.19,这样我就可以在Centos 7上轻松运行它了?
答案 0 :(得分:2)
您需要使用较旧的编译器和附带的libstdc ++进行构建,至少与CentOS附带的GCC版本一样旧。
另一种方法是静态链接libgcc和libstdc ++,虽然你可能会遇到与glibc相同的问题,并且无法静态链接。话虽如此,glibc可能会破坏这种替代方案。
100%确定的唯一“正确”方法是在CentOS主机上进行编译,或者让sysroot复制其基本系统布局。
另一种更正式的替代方案是使用[Linux LSB编译器] [1],它几乎为您提供了与任何自尊的Linux发行版兼容的基线。我不知道这种兼容性的程度,所以我不能与LSB分享任何经验,我只知道它的存在和目的。
[1] https://wiki.linuxfoundation.org/en/Developers/LSB_Tutorial