首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GCC 4.4库与GCC 4.8应用

GCC 4.4库与GCC 4.8应用
EN

Stack Overflow用户
提问于 2016-12-20 15:49:07
回答 1查看 718关注 0票数 1

我正在写一个应用程序,我想在rhel7上使用GCC 4.8。我的问题是,我需要使用第三方共享库,它是使用GCC 4.4构建在rhel6上的。

EN

回答 1

Stack Overflow用户

发布于 2016-12-21 09:35:14

有人建议我使用extern "C“在我的应用程序和库之间创建一个接口,以避免c++03到c++11之间的ABI问题,并且只在接口中传递简单的C结构。

这是一个很有意义的建议,因为很难在C++接口中保持ABI的兼容性。

但是他们也建议我可能不得不从libstdc++机器复制和链接rhel6和libgcc,因为第三方库(和我的接口)是使用这些库构建的。这就是我困惑的地方。

libgcc和libstdc++都保持向后兼容性(除非在GCC5中,但这不是您的情况),所以第三方库在RHEL7库中应该运行得很好。

考虑到libstdc++和libgcc的主要版本(libName.so.mainor.minor.x.z)在rhel6和7上是相同的,我真的需要将它们从rhel6复制到7吗?

没有(见上文)。

我不能在rhel6上构建我的界面,并将它与第三方库一起复制到rhel7 (而不复制旧的libstdc++/libgcc)吗?

是的,这会有用的。

我的意思是,由于使用旧的libstdc++/libgcc构建的东西应该是向前兼容的,不是吗?

正确(他们通常说“标准库的新版本是向后兼容的,即用旧库编译的软件将继续工作”)。

我会遇到问题(ABIs)吗?

如果您设法将在一个libstdc++中创建的STL对象传递给另一个libstdc++,则会出现奇怪的错误。但是,如果您的和第三方库都有纯C接口,这不应该是一个问题(因为STL对象无法转义其包含的库)。

如果我确实需要从libstdc++复制rhel6和libgcc,并将新版本和旧版本链接到一起-如何做到?有关于静态链接新版本的建议有效吗?

这将是不必要的负担。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41246228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档