gpt4 book ai didi

c++ - 在 GCC 4.8 应用程序中使用 GCC 4.4 库

转载 作者:行者123 更新时间:2023-11-30 05:19:13 25 4
gpt4 key购买 nike

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

最佳答案

Someone suggested I create an interface between my app and the library using extern "C" to avoid ABI issues of going between c++03 to c++11, and only pass simple C structs in the interface.

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

But they also suggested its possible I might have to copy and link libstdc++ and libgcc from the rhel6 machine since the 3rd party lib (and my interface) is built using those. This is where I am confused.

libgcc 和 libstdc++ 都保持向后兼容性(除非在 GCC5 中,但这不是你的情况)所以第 3 方库应该可以很好地与 RHEL7 库一起工作。

Given that the major version (libName.so.major.minor.x.z) of libstdc++ and libgcc is the same on rhel6 and 7, do I really need to copy them from rhel6 to 7?

否(见上文)

Cant I build my interface on rhel6, and just copy it along with 3rd party lib to rhel7 (without copying old libstdc++/libgcc)?

是的,这会起作用。

I mean, since stuff built using old libstdc++/libgcc should be forward compatiable, no?

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

Can I run into issues (ABIs)?

如果您以某种方式设法将在一个 libstdc++ 中创建的 STL 对象传递给另一个,您将遇到奇怪的错误。但是,如果您的库和第 3 方库都有纯 C 接口(interface),这应该不是问题(因为 STL 对象无法逃脱其包含的库)。

If I do need to copy libstdc++ and libgcc from rhel6, and link new and old versions together -- how do i do that? will there suggestion of statically linking the new versions work?

这将是不必要的负担。

关于c++ - 在 GCC 4.8 应用程序中使用 GCC 4.4 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41246228/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com