ホームページ > バックエンド開発 > C++ > 記事の内容に適した質問ベースのタイトルをいくつか示します。 * C コンパイルで -static を -pthread とともに使用すると、セグメンテーション違反が発生するのはなぜですか? * セグメンテーション違反を解決する方法

記事の内容に適した質問ベースのタイトルをいくつか示します。 * C コンパイルで -static を -pthread とともに使用すると、セグメンテーション違反が発生するのはなぜですか? * セグメンテーション違反を解決する方法

Patricia Arquette
リリース: 2024-10-26 21:25:02
オリジナル
1071 人が閲覧しました

Here are a few question-based titles that fit the content of your article:

* Why does using -static with -pthread for C   compilation cause Segmentation Faults?
* How to resolve Segmentation Faults when statically linking pthread in C  ?
* Static vs. Dyn

マルチスレッドを有効にするために g と -pthread フラグを指定して C コードをコンパイルする場合、-static を使用して pthread ライブラリに対して静的にリンクすると、セグメンテーション フォールトが発生する可能性があります。これは、静的にリンクされた pthread ライブラリに、glibc ライブラリで定義されている pthread_mutex_lock() などの必要な弱いシンボルが不足しているために発生します。

この問題を解決するには、実行可能ファイルが pthread に対して動的にリンクされていることを確認します。 -lpthread フラグをリンカーに設定します。これにより、リンカーは pthread の共有ライブラリ バージョンから必要な弱いシンボルを強制的に含めるようになります。

あるいは、静的リンクが必要な場合は、次のコマンドを使用してプログラムをコンパイルします。

g++ -o one one.cpp -Wall -std=c++11 -O3 -static -lrt -pthread \
    -Wl,--whole-archive -lpthread -Wl,--no-whole-archive
ログイン後にコピー

-Wl,--whole-archive オプションは、リンカーに pthread ライブラリのすべてのオブジェクト ファイルを強制的に含めさせ、必要な弱いシンボルが確実に含まれるようにします。 -Wl,--no-whole-archive オプションは、後続のアーカイブ ファイルに対してこの動作をオフにします。

以上が記事の内容に適した質問ベースのタイトルをいくつか示します。 * C コンパイルで -static を -pthread とともに使用すると、セグメンテーション違反が発生するのはなぜですか? * セグメンテーション違反を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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