解决: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

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值