解决:make时出现错误libpthread.so.0: error adding symbols: DSO missing from command line(通用方案)

make时出现错误libpthread.so.0: error adding symbols: DSO missing from command line 的通用解决方案

安装ucmq遇到一个很吐血的问题(其它的解决方案同理)

/usr/bin/ld: ucmq-util.o: undefined reference to symbol 'pthread_sigmask@@GLIBC_2.2.5'

//usr/lib64/libpthread.so.0: error adding symbols: DSO missing from command line

问题原因分析

出现该问题的原因:pthread不是linux下的默认的库,也就是在链接的时候,无法找到phread库中线程函数的入口地址,于是链接会失败。
 
解决方法如下
 
在makefile文件中的LIBS中添加lz -lrt -lm -lpthread
 
1. 记住报错位置: ucmq-util.o
2. 据错误提示在当前路径下搜索:grep -r ucmq-util.o,找到如下路径Makefile文件并依次打开寻找LIBS
  • source/Makefile.in:ucmq-util.o: util.c
  • source/Makefile:ucmq-util.o: util.c
  • source/.deps/ucmq-util.Po:ucmq-util.o: util.c
定位到如下行,你发现了什么?是不是没有 “ -lpthread ”?这是问题关键所在!
 
LIBS = -lz -lrt -lresolv -lnsl -lm -ldl -lbz2
 
然后将这行加上-lpthread,修改后如下(保存退出):
 
LIBS = -lz -lrt -lresolv -lnsl -lm -ldl -lbz2 -lpthread
 
记得同时修改这两个文件
[root@localhost ucmq]# vi source/Makefile
[root@localhost ucmq]# vi Makefile

修改后再编译,一切顺利!!

饮水不忘思源,感谢以下两位朋友
https://blog.csdn.net/fjx1173865548/article/details/44131203
https://blog.csdn.net/csdn_zyp2015/article/details/73087318

你可能感兴趣的:(libpthread.so.0,DSO,missing,from,command,line)