真正的答案,cmake 时,/usr/bin/ld: cannot find -lpthreads问题

引言

看来很多答案,说的天花乱坠,实际上半点用处没有。真的忍不住想吐槽

直接说答案:

1.真的不存在,重装g++/gcc
2.cmake 提示问题,查看有无其他报错,没有就不用管,直接make。

一、测试是否存在

创建一个func.cpp

#include <pthread.h>

void* test_func(void* data)
{
  return data;
}

int main(void)
{
  pthread_t thread;
  pthread_create(&thread, NULL, test_func, NULL);
  pthread_detach(thread);
  pthread_join(thread, NULL);
  pthread_atfork(NULL, NULL, NULL);
  pthread_exit(NULL);

  return 0;
}

编译加执行

g++ -o fun func.cpp -lpthread
./fun

如果没有报错,那恭喜你,pthread 的动态库 没有问题。【直接看第三点】

二、有报错,重新安装

2.如果有报错,那更简单了,明显就是 动态库不存在,正常情况下没必要搞什么动态库软链接啥的,你只要没改动过都是正常的。
直接梭哈!重装就完事了

sudo apt-get autoremove g++
sudo apt-get autoremove c++
sudo apt-get install g++
sudo apt-get install c++

然后,查看动态库位置

ldconfig -p |grep pthread
#有查询结果就是对的,然后在执行一遍上面的测试

三、正常运行但是cmake 报错了

这是正常现象,cmake 期间找不到 pthread 的动态库是被允许的,只要你写的 CMakeLists.txt,有这句代码,那么make的时候就不会报错

set (CMAKE_CXX_LINK_EXECUTABLE "${CMAKE_CXX_LINK_EXECUTABLE} -lpthread")

但是为啥make会提示不存在?这大概是因为其他的命令导致了报错
比如我cmake的时候,报了一个msyql 不存在的错误【红框一】,但是我没注意,只留意了 CMakeError.log 【红框二】
如图
在这里插入图片描述

但是,当我解决了mysql的问题之后,实际上cmake 已经通过了,已经生成了MakeFile文件,红框一报错如上所说,是被允许的
在这里插入图片描述
直接make,搞定
在这里插入图片描述

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
cmake-3.11.2-win64-x64 是一个用于 Windows 操作系统的 CMake 版本。CMake 是一个跨平台的开源构建工具,用于自动生成适用于不同的操作系统(例如 Windows、Linux 和 macOS)和编译器的构建文件。 cmake-3.11.2-win64-x64 意味着这是一个适用于 64 位 Windows 系统的 CMake 版本,可以用于开发和构建 64 位的 Windows 应用程序。CMake 提供了一种简化和标准化项目构建过程的方法,通过 CMake 脚本文件,可以描述项目的源代码、依赖项、编译选项等信息。 使用 cmake-3.11.2-win64-x64,您可以在 Windows 操作系统上进行项目的构建和编译。首先,您需要将 cmake-3.11.2-win64-x64 下载到本地计算机上,并按照安装指南进行安装。安装后,您可以在命令行中使用 cmake 命令或者使用图形界面工具(如 CMake-GUI)来配置项目的构建环境。 通过使用 CMake 构建项目,您可以轻松地生成适用于 Visual Studio、MinGW、Ninja 等常见编译器和构建工具的构建文件。通过执行生成的构建文件,您可以在本地计算机上编译和构建项目,生成可执行文件或者库文件。 总结来说,cmake-3.11.2-win64-x64 是一个适用于 64 位 Windows 系统的 CMake 版本,它提供了一种简化和标准化的项目构建过程,可以帮助开发者在 Windows 下进行项目的构建和编译。通过 CMake,您可以自动生成适用于不同平台和编译器的构建文件,从而提高项目的可移植性和可维护性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值