libstdc++ 通过不同的库静态和动态链接

问题描述 投票:0回答:1
  1. 我的可执行文件动态链接两个库(d1.so 和 d2.so)。
  2. d1.so 静态链接到 libstdc++。
  3. d2.so 动态链接到 libstdc++。

假设首先加载 d1.so,在以下场景中将调用 stdlib(动态或静态)方法,

  1. d1.so 调用 stdlib 方法。
  2. d2.so 调用 stdlib 方法。
  3. 可执行文件调用 stdlib 方法。

如果d1.so和d2.so都是由不同的编译器版本编译的,会不会因为stdlib的混用而导致运行时出现问题?

c++ static-linking dynamic-linking libstdc++
1个回答
0
投票

假设首先加载 d1.so,在以下场景中将调用 stdlib(动态或静态)方法,

所有场景下 d1.so 的静态版本。

如果d1.so和d2.so都是由不同的编译器版本编译的,会不会因为stdlib的混用而导致运行时出现问题?

当然,ABI 兼容性已记录在https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html 中提供的文档中。此外,由于静态 libnking,glibc 兼容性不同版本的 glibc 的兼容性如何? 也可能相关。

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