草庐IT

libpthread

全部标签

linux - 强制 GCC 静态链接,例如pthreads(而不是动态链接)

我的程序构建为一个加载器和许多模块,它们是共享库。现在,其中一个库使用pthreads,它似乎动态绑定(bind)到模块(在启动时加载)。现在,如果我可以强制将pthreads链接到模块文件中,那就更简单了。Linux上的GCC,我该怎么做?我想libpthread.a是必需的.... 最佳答案 虽然将libpthread.a链接到共享库在理论上是可行的,但这是一个非常糟糕的主意。原因是libpthread是glibc的一部分,所有glibc的部分必须完全匹配,否则您会看到奇怪且无法解释的崩溃。因此将libpthread.a链接到您

linux - 强制 GCC 静态链接,例如pthreads(而不是动态链接)

我的程序构建为一个加载器和许多模块,它们是共享库。现在,其中一个库使用pthreads,它似乎动态绑定(bind)到模块(在启动时加载)。现在,如果我可以强制将pthreads链接到模块文件中,那就更简单了。Linux上的GCC,我该怎么做?我想libpthread.a是必需的.... 最佳答案 虽然将libpthread.a链接到共享库在理论上是可行的,但这是一个非常糟糕的主意。原因是libpthread是glibc的一部分,所有glibc的部分必须完全匹配,否则您会看到奇怪且无法解释的崩溃。因此将libpthread.a链接到您

c++ - libpthread.so 在 `dlclose()` 之后继续使用 TLS 空间和 DL 命名空间

我正在从事一个项目,该项目需要将基于Rust的插件(共享对象)任意加载/卸载到隔离的动态库命名空间中。我使用dlmopen(LM_ID_NEWLM,"rust-plugin.so",RTLD_LAZY)为共享对象创建新的命名空间。当不再需要共享对象时,我调用dlclose()。不幸的是,我发现即使我dlclose()一次只有一个共享对象有效,在dlmopen()ing14Rust插件之后对象,我得到错误:dlmopen(rust-plugin.so)failed:/lib/x86_64-linux-gnu/libc.so.6:cannotallocatememoryinstaticTL