c - 为什么需要'-lpthread'?
问题描述
所以我的问题是:为什么在编译命令结束时需要'-lpthread'?
为什么这个命令有效:
gcc -o name name.c -lpthread
但这不会:
gcc -o name name.c
我在我的 c 代码中使用 pthread.h 库。
我已经在网上寻找了一些答案,但并没有真正找到任何可以理解的答案
解决方案
pthread.h
不是一个库,它只是一个头文件,它为您提供将用于多线程的函数的声明(不是函数的实际主体)。
在编译时使用-libpthread
或-lpthread
实际链接 GCC 库pthread
与您的代码。因此编译器标志-libLIBRARY_NAME
or-lLIBRARY_NAME
是必不可少的。
如果您不包含标志-l
或您将无法使用外部库-lib
。LIBRARY_NAME
在这种情况下,假设您正在使用函数pthread_create
and pthread_join
,那么您将收到一条错误消息:
undefined reference to `pthread_create'
undefined reference to `pthread_join'
推荐阅读
- python - 在文档中显示类“表”的列参数
- tableau-api - 如何在 Tableau 中分组和创建计算字段?
- javascript - HTMLUnit 不使用 JavaScript 返回完全加载的页面
- python - 从德克萨斯州查询工具中抓取表格
- django-rest-framework - Django Rest Framework 嵌套列表序列化
- c# - 如何使用 AutoMock 模拟属性注入依赖项
- cmake - cmake 命令的详细输出
- angular - 如何从Angular中的响应中解析HTML?
- python - 无法使用 python sounddevice 在左右扬声器上播放
- javascript - Bootstrap v4.1 中的动画不起作用