我正在构建3个本机共享库lib1,lib2和lib3。 lib1依赖于lib2和lib3。在构建这些库时,我已指定-lgnustl_static进行链接。我的问题是所有的库都将拥有“libgnustl_staic.a”库的单独副本吗?如果是这样,这不会在运行时创建任何未定义的行为吗?
有人建议何时使用libgnustl_static.a和libgnustl_shared.so库吗?
答案 0 :(得分:2)
将库静态链接到多个加载到同一可执行文件中的共享对象可能会导致ODR违规。对于相同的函数,这不是问题,但可能会导致全局数据和静态构造函数(例如STL中的标准流)出现严重问题。
链接共享STL会更好。