ホームページ > バックエンド開発 > C++ > 私の C `std::thread` コードが Linux 上で GCC にリンクできないのはなぜですか?それを修正するにはどうすればよいですか?

私の C `std::thread` コードが Linux 上で GCC にリンクできないのはなぜですか?それを修正するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-11-29 07:08:09
オリジナル
253 人が閲覧しました

Why Does My C   `std::thread` Code Fail to Link on Linux with GCC, and How Can I Fix It?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート