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

时间:2012-04-30 21:07:21

标签: linux gcc linker shared-libraries static-libraries

我的程序是作为加载器和许多模块构建的,它们是共享库。现在其中一个库使用pthreads,它似乎动态绑定到模块(在启动时加载)。现在,如果我可以强制将pthreads链接到模块文件中,那就更简单了。关于linux的GCC,我该怎么办?我想libpthread.a是必要的....

1 个答案:

答案 0 :(得分:18)

虽然理论上可以将libpthread.a链接到共享库,但这是非常糟糕的主意。原因是libpthreadglibc的一部分,glibc 的所有部分必须完全匹配,或者您会看到奇怪且无法解释的崩溃。

所以将libpthread.a链接到您的共享库中:

  1. 导致程序在移动到具有不同版本glibc
  2. 的计算机时崩溃
  3. 当您的当前计算机glibc升级后,您的现有程序崩溃,但您的模块未与更新的libpthread.a重新关联。
  4. 免于恶化,不要那样做。