如何链接到我自己的pthread库

时间:2012-03-10 10:54:29

标签: c linux multithreading gcc x86-64

我想对用于我的程序的pthread库进行一些修改。这就是为什么我想链接我自己修改的pthread库。我可以将glibc中的源代码用于pthread,修改它并将其用于我的程序。

通常您使用标记-pthread来链接原始pthread库。如何在我的makefile中指定链接到我自己的库。

4 个答案:

答案 0 :(得分:4)

只需使用-L选项指定自定义库所在的目录,并使用-l选项指定库的名称。 对于Ex:

-L/root/x/mylib -lmypthread

在这种情况下,你的lib名称应该是libmypthread.so

有关详细信息,请参阅http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html

要确保在执行程序时找到要加载的库,请执行

export LD_LIBRARY_PATH = $(LD_LIBRARY_PATH):/root/x/mylib

答案 1 :(得分:2)

-pthread相当于-lpthread -D_REENTRANT和gcc / glibc。您也可以这样做,但使用不同的链接参数(-lname-of-library)。

答案 2 :(得分:2)

请勿使用-pthread。它是一个未记录的GCC选项,可能与其他一些(Solaris?)编译器兼容。

glibc中完全没有-D_REENTRANT启用它-pthread的定义;没有任何标头依赖于此宏来确保线程安全。 (最后一种机制在1998年从glibc头中删除了!)只需在-lpthread中链接就足以将glibc函数切换到线程安全模式,-lpthread可以用你自己的库代替,比如另一个答案说。

答案 3 :(得分:0)

以不同的名称编译库,例如libmypthread.so并将其放在LD_LIBRARY_PATH环境变量中包含的一个目录中(或添加新目录)。现在,您可以使用-lmypthread链接到您的库。