当我编译cc filename.c时我编写了一个小线程程序,我在编译期间得到了一些语句,但是当我使用-lpthread(cc filename.c -lpthread)编译时,它被执行了什么是-lpthread为什么是需要吗?任何人都可以详细解释这个。这将是非常有帮助的。
答案 0 :(得分:3)
您在程序中使用的pthread_create()
函数不是基本的C函数,并且要求您使用库。
这就是你必须使用这个命令开关-lpthread
的原因。
这个gcc命令告诉他在磁盘的某个地方寻找一个名为libpthread
的库,并用它来提供线程创建机制。
我建议您阅读此内容以熟悉“库”概念:http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html
答案 1 :(得分:0)
pthread是一种称为POSIX线程的东西。它是Unix类POSIX环境中线程的标准库。
由于您要使用pthread,您需要告诉编译器链接到该库。
您可以详细了解lpthread是什么以及它是如何工作的:https://computing.llnl.gov/tutorials/pthreads/
答案 2 :(得分:0)
-l选项通常用于指定应与程序链接的库(在本例中为pthread库)。
由于线程函数通常位于单独的库中,因此在构建使用它们的程序时需要这样的选项,否则会出现链接器错误。