コンパイル時の -pthread フラグの重要性 質問する

コンパイル時の -pthread フラグの重要性 質問する

さまざまなマルチスレッド C および C++ プロジェクトで、フラグがコンパイル段階とリンク段階の両方に適用されているのを見たことがあります-pthreadが、フラグをまったく使用せずに-lpthreadリンク段階に渡すだけのプロジェクトもあります。

フラグを付けずにコンパイルおよびリンクすると危険はありますか?-pthreadつまり、 は実際には何を-pthreadするのでしょうか? 私は主に Linux プラットフォームに興味があります。

ベストアンサー1

試す:

gcc -dumpspecs | grep pthread

で始まるものを探します%{pthread:

私のコンピュータでは、これにより、ファイルは でコンパイルされ-D_REENTRANT、 でリンクされます-lpthread。他のプラットフォームでは、これは異なる場合があります。-pthread移植性を最大限に高めるには、 を使用します。

GNU libc で を使用すると_REENTRANT、一部の libc ヘッダーの動作が変わります。具体的な例としては、 がerrnoスレッドローカルの場所を返す関数を呼び出すようになります。

おすすめ記事