在Linux(内核2.6.5)上,我们的构建系统使用调用gcc -D_REENTRANT。
-D_REENTRANT
使用时仍然需要pthreads吗?
pthreads
它与gcc -pthread期权有什么关系?我知道我应该-pthread与pthreads一起使用,还需要-D_REENTRANT吗?
gcc -pthread
-pthread
附带说明一下,您在gcc 3.3.3和gcc 4.xx之间使用REENTRANT有什么区别吗?
当我使用-pthreadgcc选项时,可以看到已_REENTRANT定义。-D_REENTRANT从命令行省略是否会有所不同,例如某些对象可以在没有多线程支持的情况下进行编译,然后链接到使用pthreads的二进制文件中,这会引起问题吗?
_REENTRANT
我认为应该可以使用: g++ -pthread
g++ -pthread
> echo | g++ -E -dM -c - > singlethreaded > echo | g++ -pthread -E -dM -c - > multithreaded > diff singlethreaded multithreaded 39a40 > #define _REENTRANT 1
我们正在编译与静态库链接的多个静态库和应用程序,库和应用程序都使用pthreads。
我认为过去在某个阶段需要它,但想知道是否仍然需要它。谷歌搜索没有返回任何新的信息提- D_REENTRANT用pthreads。您能否指向我讨论最近版本的 kernel / gcc / pthread 使用的链接或参考?
D_REENTRANT
澄清:目前,我们正在使用-D_REENTRANT和-lpthread,我想我可以仅用g ++ -pthread替换它们,看着man gcc它设置了预处理器和链接器的标志。有什么想法吗?
对我而言,最好的答案是来自pts他的评论,只要他不愿意将其作为答案提交:
pts
您进行了适当的调查,并回答了自己的问题。使用g++ -pthread,就相当于g++ -lpthread -D_REENTRANT。使用g++ -D_REENTRANT会有所不同,它可能不会设置所有链接器标志。– pt 5月18日0:30
g++ -lpthread -D_REENTRANT
g++ -D_REENTRANT