在多个本机库中链接 gnustl_static

Linking gnustl_static in multiple native libraries

我正在构建 3 个本机共享库 lib1、lib2 和 lib3。 lib1 依赖于 lib2 和 lib3。在构建这些库时,我指定了 -lgnustl_static 用于链接。我的问题是所有图书馆都会有 "libgnustl_staic.a" 图书馆的单独副本,对吗?如果是这样,这不会在运行时产生任何未定义的行为吗?

有人可以建议何时使用 libgnustl_static.a 和 libgnustl_shared.so 库吗?​​

静态地link将一个库放入多个共享对象中,这些共享对象被加载到同一个可执行文件中可能会导致 ODR 违规。对于相同的函数,这不是问题,但可能会导致全局数据和静态构造函数(例如 STL 中的标准流)出现严重问题。

最好link共享STL。