没有TLS符号的库会出现错误:dlopen:无法使用静态TLS加载任何其他对象

时间:2015-08-25 14:25:57

标签: c linux gcc shared-libraries dlopen

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

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

然而,在我检查之后:

readelf -a libfoo.so | grep TLS

没有TLS符号。

任何想法为何无法加载?

1 个答案:

答案 0 :(得分:1)

  

任何想法为何无法加载

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

您可以在每个从属库上运行ldd libfoo.so,然后运行readelf -l。其中一个必须有TLS段,否则您将无法获得错误。