gpt4 book ai didi

multithreading - gcc参数: -pthread.它是做什么的?

转载 作者:行者123 更新时间:2023-12-03 13:17:05 33 4
gpt4 key购买 nike

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

gcc foobar.c -o foobar -pthread

我对“-pthread”感到困惑。就是它

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

如果有任何一种情况,它实际上在做什么?包括一些图书馆?包括一些对象?设置其他选项?

顺便说一句-有人问了类似的问题 15929739,但从未回答。问题 20924412也无济于事。

最佳答案

man page:

-pthread
Adds support for multithreading with the pthreads library. This option sets flags for both the preprocessor and linker.



具体来说,从GCC 6.2.1开始, -pthread将:
  • #define _REENTRANT 1
  • 添加-lpthread以针对libpthread链接

  • 你问我怎么知道的?

    添加了哪些预处理程序标志?

    让我们 dump the preprocessor defines进行比较:
    $ diff <(gcc -dM -E - < /dev/null) <(gcc -pthread -dM -E - < /dev/null)
    > #define _REENTRANT 1

    添加了哪些链接器选项?

    让我们 dump the ld options passed by GCC进行比较:
    diff <(gcc -### -o foo empty.c 2>&1) <(gcc -### -pthread -o foo empty.c 2>&1)

    这里的输出有些冗长,但是如果忽略临时的文件名差异,则会发现:
  • -lpthread
  • "-plugin-opt=-pass-through=-lpthread"
  • 关于multithreading - gcc参数: -pthread.它是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41430013/

    33 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com