pthread相关报错
背景
最近在用gtest编译单元测试demo的时候,遇上了一个pthread报错,这里就整理一下常见的pthread相关报错,及对应的解决方案
报错提示“未定义的引用”
解决方案
一般都是在链接pthread的库的时候,提示“pthread_xxxx 未定义的引用”这类
对于这个报错,有3种可能的原因
1.忘记在cmake里链接pthread库
忘记链接pthread的库,那么直接在cmake里面加入对pthread库的链接即可
如下:
1 | …… |
2.忘记在cmake里指定可以寻找到pthread库的路径
如果确认已经做了第一步,却还是提示未定义的引用,那么非常有可能是没有找到pthread库的路径,需要在cmake里指名pthread库的路径
如下:
1 | …… |
3.在cmake里链接pthread库的顺序不对
如果以上两步都确认是对的,依然还是提示未定义的引用,那么最大的可能就是链接顺序的问题
比如在以下这个cmake里面(会报错的版本):
1 | …… |
对于这个报错提示,一直都是“pthread_xxxx 未定义的引用”
排查下来,就是链接库的顺序问题,解决方案就是调整链接库的顺序,将对pthread的链接放在最后面
比如下面这个cmake(正确编译的版本):
1 | …… |