http://blog.csdn.net/songyachao/article/details/54923585
最近在Ubuntu下编译一个程序,需要使用多线程库pthread,但是编译时总是提示“undefined reference to 'pthread_create'”的错误,如下图所示:
如果你使用的是gcc编译,或者将编译命令都写到makefile文件中了,例如我的makefile文件为:
那么这时候只要在最后面加上-lpthread就可以了,而且在redhat5中-lpthread可以加在-Wall的后面,但是在Ubuntu下必须加在最后才行。
如果你用的是eclipse,并makefile是由eclipse自动生成的,那么你要在eclipse下配置一下。方法是右击eclipse工程文件,选择属性->C/C++Setting->在右侧栏中选择“tool Settings”->GCC linker->在library中做如下设置,然后重新编译就行了。
如果上面的方法还是不起作用,可能是你的系统的动态库有问题。这时候需要配置系统库了。且听我慢慢道来。
一般Linux系统把 /lib 和 /usr/lib 两个目录作为默认的库搜索路径,所以使用这两个目录中的库时不需要进行设置搜索路径即可直接使用。对于处于默认库搜索路径之外的库,需要将库的位置添加到 库的搜索路径之中。在系统的lib目录下是有thread共享库文件的。在早期的Ubuntu系统中,lib只要设置/lib和/usr/lib就可以了,但是Ubuntu14中, lib库的分类明显多了,主要是区分32位和64位的库。在/etc/ld.so.conf.d下可以看到几个与共享库有关的配置文件。例如i686-linux-gnu.conf文件的内容为:
copy