链接低版本编译器编译的动态库有什么潜在问题吗?

问题描述 投票:0回答:1

这样的情况下有没有潜在的问题?

我的项目使用g++11.4编译,而我无法控制的所需动态库则使用g++8.2编译。

c++11 g++
1个回答
0
投票

是的,这肯定有潜在的问题。实际的代码是最少的问题;你的CPU显然是GCC 8.2中支持的CPU,并且在G++11.4中仍然受支持。对于这些 CPU,调用约定保持不变。

潜在的问题是 glibc,尤其是其相当弱的版本控制。您不能针对特定版本,您的链接器将选择当时使用的操作系统(!)。并且他们的链接器选择了他们的操作系统当时使用的任何内容。 还有一个小问题

_GLIBCXX_USE_CXX11_ABI

- stdlibc++ 更改了 GCC5 周围的

std::string
的 ABI,并允许您在 C++11 和向后兼容性之间进行选择。您必须检查您是否使用与这些库相同的设置。
    

© www.soinside.com 2019 - 2024. All rights reserved.