gpt4 book ai didi

multithreading - 编译时 -pthread 和 -lpthread 之间的区别

转载 作者:行者123 更新时间:2023-12-03 04:49:10 27 4
gpt4 key购买 nike

编译多线程程序时使用的gcc -pthreadgcc -lpthread有什么区别?

最佳答案

-pthread 告诉编译器链接 pthread 库并配置线程的编译。

例如,以下显示了在我的 Ubuntu 计算机上安装的 GCC 软件包上使用 -pthread 选项时定义的宏:

$ gcc -pthread -E -dM test.c > dm.pthread.txt
$ gcc -E -dM test.c > dm.nopthread.txt
$ diff dm.pthread.txt dm.nopthread.txt
152d151
< #define _REENTRANT 1
208d206
< #define __USE_REENTRANT 1

使用-lpthread选项只会导致pthread库被链接——预定义的宏不会被定义。

底线:您应该使用 -pthread 选项。

<小时/>

注意:-pthread 选项在 GCC 文档中被记录为特定于平台的选项,因此它可能并不总是可用。但是,它可以在 GCC 文档未明确列出的平台上使用(例如 i386 和 x86-64) - 您应该在可用时使用它。

另请注意,GCC 使用了其他类似的选项,例如 -pthreads(在 Solaris 2 上列为 -pthread 的同义词)和 - mthread(用于 i386 和 x86-64 Windows 上的 MinGW 特定线程支持)。我的理解是,GCC 正在尝试继续统一使用 -pthread

关于multithreading - 编译时 -pthread 和 -lpthread 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23250863/

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