Library with no TLS symbols gives error : dlopen: cannot load any more object with static TLS

Library with no TLS symbols gives error : dlopen: cannot load any more object with static TLS

以下调用无法动态加载库,抱怨无法使用静态 TLS 加载更多对象:

dlopen("libfoo.so",RTLD_LOCAL | RTLD_NOW);

然而在我检查之后:

readelf -a libfoo.so | grep TLS

没有 TLS 符号。

知道加载失败的原因吗?

Any ideas why it would be failing to load

这个库可能依赖于其他一些带有 TLS 段的库。

您可以运行 ldd libfoo.so,然后在每个依赖库上readelf -l。其中之一必须有一个 TLS 段,否则您将不会收到您收到的错误。