Linux 上の GCC で std::thread を使用する場合のリンクの問題を解決する
C によるマルチスレッドの領域では、C 標準ライブラリが提供します。 std::thread クラス。 Linux システムで GCC で std::thread を利用しようとすると、次のエラーが発生する場合があります:
terminate called after throwing an instance of 'std::system_error' what(): Operation not permitted Aborted
原因:
このエラーは、リンクが適切であることを示します。 std::thread に関連する依存関係を解決するためのコンパイラのオプションが指定されていません。具体的には、Linux では、pthread ライブラリが std::thread の実装に関与します。
解決策:
この問題に対処するには、-pthread コンパイラ オプションを使用する必要があります。雇用される。このオプションは、プログラムを pthread ライブラリに対してリンクするようにコンパイラーに指示します。適切なリンク オプションを使用してコードを正しくコンパイルする方法は次のとおりです:
g++ -std=c++0x test.cpp -pthread
リンク オプションの配置:
-pthread オプションがリストされている必要があることに注意することが重要です。コンパイル時のソース ファイル (.cpp) の後。これにより、コンパイラーが依存関係を正しく解決できるようになります。
改訂されたコマンド:
-pthread オプションを追加すると、改訂されたコンパイル コマンドは次のように表示されます:
g++ -std=c++0x test.cpp -pthread
-pthread オプションを組み込むと、コードが正常にコンパイルおよび実行され、std::thread が機能できるようになります。 Linux 環境でのマルチスレッド化を目的としています。
以上が私の C `std::thread` コードが Linux 上で GCC にリンクできないのはなぜですか?それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。