Linux如何定义宏 REENTRANT,linux – 我需要-D_REENTRANT和-pthreads吗?

在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会有什么不同,例如,某些对象可以在没有多线程支持的情况下编译,然后链接到使用pthreads的二进制文件并导致问题吗?

我认为应该可以使用: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与pthreads的信息.你能指点我讨论在最近版本的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,gcc,pthreads

来源: https://codeday.me/bug/20190925/1817416.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值