首页 > 解决方案 > 为什么需要'-lpthread'?

问题描述

所以我的问题是:为什么在编译命令结束时需要'-lpthread'?

为什么这个命令有效:

gcc -o name name.c -lpthread

但这不会:

gcc -o name name.c

我在我的 c 代码中使用 pthread.h 库。
我已经在网上寻找了一些答案,但并没有真正找到任何可以理解的答案

标签: cgcccompilationpthreads

解决方案


pthread.h不是一个库,它只是一个头文件,它为您提供将用于多线程的函数的声明(不是函数的实际主体)。

在编译时使用-libpthread-lpthread实际链接 GCC 库pthread与您的代码。因此编译器标志-libLIBRARY_NAMEor-lLIBRARY_NAME是必不可少的。

如果您不包含标志-l或您将无法使用外部库-libLIBRARY_NAME

在这种情况下,假设您正在使用函数pthread_createand pthread_join,那么您将收到一条错误消息:

undefined reference to `pthread_create'

undefined reference to `pthread_join'

推荐阅读