在 Linux(内核 2.6.5)上,我们的构建系统使用-D_REENTRANT
.
使用时还需要这个pthreads
吗?
它与gcc -pthread
期权有什么关系?我知道我应该-pthread
与 pthreads 一起使用,我还需要-D_REENTRANT
吗?
附带说明一下,您知道在 gcc 3.3.3 和 gcc 4.xx 之间使用 REENTRANT 之间有什么区别吗?
当我使用-pthread
gcc 选项时,我可以看到它_REENTRANT
被定义了。-D_REENTRANT
从命令行省略是否会产生任何影响,例如,是否可以在没有多线程支持的情况下编译某些对象,然后链接到使用 pthread 的二进制文件中并会导致问题?
我认为应该可以使用: g++ -pthread
> echo | g++ -E -dM -c - > singlethreaded
> echo | g++ -pthread -E -dM -c - > multithreaded
> diff singlethreaded multithreaded
39a40
> #define _REENTRANT 1
我们正在编译多个静态库和与静态库链接的应用程序,库和应用程序都使用 pthread。
我相信它在过去的某个阶段是必需的,但想知道它是否仍然是必需的。谷歌搜索没有返回任何最近提到的信息 - D_REENTRANT
with pthreads
. 您能否指出我在最近版本的kernel/gcc/pthread中讨论使用的链接或参考资料?
澄清:目前我们正在使用 -D_REENTRANT 和 -lpthread,我假设我可以用 g++ -pthread 替换它们,查看 man gcc 它为预处理器和链接器设置了标志。有什么想法吗?