有什么区别gcc -pthread
and gcc -lpthread
编译多线程程序时使用哪个?
-pthread
告诉编译器链接 pthread 库并配置线程的编译。
例如,下面显示了当-pthread
选项在我的 Ubuntu 机器上安装的 GCC 软件包上使用:
$ 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
option.
注:-pthread
选项在 GCC 文档中被记录为特定于平台的选项,因此它可能并不总是可用。但是,它可以在 GCC 文档未明确列出的平台上使用(例如 i386 和 x86-64) - 您应该在可用时使用它。
另请注意,GCC 使用了其他类似的选项,例如-pthreads
(列为同义词-pthread
在 Solaris 2 上)和-mthread
(针对 i386 和 x86-64 Windows 上的 MinGW 特定线程支持)。我的理解是 GCC 正在尝试转向使用-pthread
统一前行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)