Multithreading gcc参数:-pthread。它有什么作用?

Multithreading gcc参数:-pthread。它有什么作用?,multithreading,gcc,pthreads,compiler-flags,Multithreading,Gcc,Pthreads,Compiler Flags,我开始在Debian8下使用gcc进行多线程编程。我已经成功地编写并运行了一个多线程测试应用程序(foobar.c),但我对Makefile(从一个示例中复制)感到困惑。特别是,有效的命令是 gcc foobar.c -o foobar -pthread 我被“-pthread”弄糊涂了。是吗 (a) 选项“-p”的值为“thread”,或 (b) 参数“-pthread” 如果是这两种情况,它实际上在做什么?包括一些图书馆?包括一些物体?设置其他选项 顺便说一句,有人问了一个类似的问题,但没

我开始在Debian8下使用gcc进行多线程编程。我已经成功地编写并运行了一个多线程测试应用程序(foobar.c),但我对Makefile(从一个示例中复制)感到困惑。特别是,有效的命令是

gcc foobar.c -o foobar -pthread
我被“-pthread”弄糊涂了。是吗

(a) 选项“-p”的值为“thread”,或
(b) 参数“-pthread”

如果是这两种情况,它实际上在做什么?包括一些图书馆?包括一些物体?设置其他选项

顺便说一句,有人问了一个类似的问题,但没有回答。问题也没有帮助。

来自:

-pthread

使用pthreads库添加对多线程的支持。此选项设置预处理器和链接器的标志

具体而言,从GCC 6.2.1开始,
-pthread
将:

  • 定义可重入1
  • 添加
    -lpthread
    链接到
    libpthread
你问我怎么知道的

添加了哪些预处理器标志?

让我们来比较一下:

$ diff <(gcc -dM -E - < /dev/null) <(gcc -pthread -dM -E - < /dev/null)
> #define _REENTRANT 1
diff <(gcc -### -o foo empty.c 2>&1) <(gcc -### -pthread -o foo empty.c 2>&1)
$diff来自:

-pthread

使用pthreads库添加对多线程的支持。此选项设置预处理器和链接器的标志

具体而言,从GCC 6.2.1开始,
-pthread
将:

  • 定义可重入1
  • 添加
    -lpthread
    链接到
    libpthread
你问我怎么知道的

添加了哪些预处理器标志?

让我们来比较一下:

$ diff <(gcc -dM -E - < /dev/null) <(gcc -pthread -dM -E - < /dev/null)
> #define _REENTRANT 1
diff <(gcc -### -o foo empty.c 2>&1) <(gcc -### -pthread -o foo empty.c 2>&1)

$diff是的,我看到了,但仍然不清楚。为预处理器定义了什么?什么是链接的?对不起,我是个笨蛋。是的,我看到了,但还不清楚。为预处理器定义了什么?什么是链接的?对不起,我是个笨蛋。相关的:相关的: