|
1
|
| Rudolfs Bundulis · 技术社区 · 8 年前 |
|
|
1
1
如果在不隐藏libstdc++符号的情况下静态地将DSO链接到libstdc++上,并且主程序也链接到libstdc++上,则主程序中的符号定义将在用打开时插入/抢占DSO中的定义。
但是,由于主程序没有链接到libpthread,进程映像中的系统libstdc++dso发现libpthread符号不可用(空),因此禁用了线程支持。但是,您的DSO需要线程支持,但无法从系统libstdc++获得线程支持。 作为一个即时的解决方案,您可以隐藏DSO中所有静态链接的libstdc++符号。然后不会发生任何干扰,DSO将实际使用DSO本身中的libstdc++副本,该副本已经确定过程中不应该有任何线程支持。
但这可能无法解决所有问题,因为libpthread via的加载延迟
但是您的发行版可能没有修复,我预计还会有其他问题,其中之一是:第二个静态链接的libstdc++副本实际上需要在这里,因为系统libstdc++是在没有线程支持的情况下加载的(因为libpthread的符号绑定时没有加载,导致了您观察到的崩溃),所以您无法将其用于创建线程。它还激活了使库不具有线程安全性的优化(避免使用原子指令等)。 |
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |