首页 > 解决方案 > 为什么需要 -pthread 作为编译 pthread c 程序的参数

问题描述

为什么当我们pthread.h在 ac 程序中使用库函数时,要编译它,我们必须写
gcc program.c -pthreadWhy doesn't gcc program.cworks。虽然简单的原因可能是
当我们指定 -pthread 标记时它包含 pthread 库。但是当我们包含其他头文件时,我们不会传递
任何此类参数。是不是因为 pthread
external library比 C 中可用的多?

标签: cgccpthreads

解决方案


库中的函数,例如stdlib.hstdio.h在 libc.so 中有实现,默认情况下链接到您的可执行文件(就像-lc指定的一样)。

math.hlibc.so 中不包含和等库pthread.h,因此必须单独链接。这可以通过分别传递-lm-lpthread参数来完成。

gcc program.c实际上会完美编译,但链接器找不到所需的函数定义,因此会抛出错误。


推荐阅读