linux - 无法 dlopen 加载模块 '/usr/lib/pa20_64/libpthread.1',因为它包含线程特定数据

标签 linux unix compiler-construction hp-ux

我在使用 dlopen() 加载库时遇到此错误:

Cannot dlopen load module '/usr/lib/pa20_64/libpthread.1' because it contains thread specific data.

我在谷歌上查了一下,下面的导出修复了它。

export LD_PRELOAD=/usr/lib/hpux64/libpthread.so.1

谁能告诉我 LD_PRELOAD 到底做了什么以及为什么我必须预加载这个库?为什么链接器不加载它?

使用 -lpthread 编译也无济于事。

ENV:HP-UX hhtenb1 B.11.31 U ia64 3881169896 无限用户许可证

最佳答案

我无法告诉您有关 HPUX 的所有详细信息,但请尝试将您的程序与 -lpthread 链接 - 这可能会解决您的问题。

实际上,您正在 dlopen()ing 的库似乎在运行时四处挖掘以查找 libpthread 的版本。 LD_PRELOAD 只是加载指定的库,就好像你已经 dlopened 它们一样,但它在程序有机会开始运行之前就完成了。

不确定细节,但有一个模糊的猜测:您正在使用的某些库在您的 dlopen 触发加载 libpthread 之前调用了 pthread 静态数据函数(但是如果第一个库有它,为什么它会尝试加载 pthread作为依赖项?- 不确定/也许这表明以前的库静态链接了一些 pthread 内容?)。

关于linux - 无法 dlopen 加载模块 '/usr/lib/pa20_64/libpthread.1',因为它包含线程特定数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4142552/

相关文章:

iphone - Xcode 默认优化级别?

linux USB 打印机驱动缺少 DEVTYPE?

linux - 我如何使用 bash 来关闭我的 GPU?

linux - 如何使用ssh主机rm -rf路径删除文件?

java - 使用系统IP地址的服务器套接字程序

html - 获取完整的站点克隆

linux - 多个端口上的 pgBouncer?

unix - 如何从匹配文件 2 的文件 1 中提取内容并将它们按文件 2 的顺序排列

apache-flex - 为什么用于 eclipse 的 is flexbuilder 插件打开和编译这么慢?

parsing - scalac缺少右括号错误报告,行号奇怪