gpt4 book ai didi

linux - 我需要 -D_REENTRANT 和 -pthreads 吗?

转载 作者:IT老高 更新时间:2023-10-28 12:37:49 25 4
gpt4 key购买 nike

在 Linux(内核 2.6.5)上,我们的构建系统使用 -D_REENTRANT 调用 gcc。

在使用 pthreads 时是否仍需要这样做?

它与 gcc -pthread 选项有什么关系?我知道我应该将 -pthread 与 pthreads 一起使用,我还需要 -D_REENTRANT 吗?

附带说明一下,您知道在 gcc 3.3.3 和 gcc 4.x.x 之间使用 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_REENTRANTpthreads 的最新信息。您能否指出一些链接或引用来讨论最近版本的 kernel/gcc/pthread 的使用?

澄清:目前我们正在使用 -D_REENTRANT 和 -lpthread,我假设我可以用 g++ -pthread 替换它们,查看 man gcc 它为预处理器和链接器设置了标志。有什么想法吗?

最佳答案

对我来说,最好的答案是来自 pts 的评论,只要他愿意提交它作为答案:

You investigated properly and answered your own question. Use g++ -pthread, it is equivalent to g++ -lpthread -D_REENTRANT. Using g++ -D_REENTRANT would be different, it may not set all the linker flags. – pts May 18 at 0:30

关于linux - 我需要 -D_REENTRANT 和 -pthreads 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/875789/

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