2012-10-15 67 views
1

我想编译提供给我的程序。我在Makefile注意到它运行的命令pthread库包含在(链接?)步骤

g++ -o test [...] -lpthread 

我注意到pthread库文件是/lib/libpthread.so.0,但是当我试图让目标,它给了我这个错误:

/usr/bin/ld: cannot find -lpthread 
collect2: ld returned 1 exit status 

我该如何解决这个问题?

+0

可能不会解决您的问题,但您应该使用'-pthread'而不是'-lpthread'。 – Mat

+0

'-Wl, - verbose'选项会告诉你GCC在哪里寻找库,这可能会帮助你找出为什么它找不到它。有关更多详细信息,请参阅http://stackoverflow.com/a/11481258/12711。 –

回答

-1

为了使用-lpthread,您需要一个libpthread.a库存档,这是用于静态链接的。 libpthread.so.0是一个共享对象,意味着它用于动态链接。请参阅GCC Link Options

+0

'-l'也用于动态链接。你的解释是不正确的。 – Mat

+0

好的。不知道gcc现在已经足够聪明,可以尝试许多变种的文件'liblibname.a','liblibname.so','libname.a',...用于链接选项'-llibname' –

+0

事实就是这样几乎永远。这不是什么新鲜事。 – Mat