静的リンク Pthread の場合、セグメンテーション違反が発生する: 説明と解決策
問題:
g と、pthread ライブラリに対してリンクする -pthread フラグを使用して C プログラムをコンパイルすると、静的 (-static) に、プログラムでセグメンテーション違反が発生します。
説明:
弱いシンボル:
動的リンクと静的リンク:
不完全なリンク解決:
解決策:
リンカーが静的にリンクされたプログラム内の pthread ライブラリからすべてのシンボルを参照するように強制するには、次を使用します。
g++ -o one one.cpp -Wall -std=c++11 -O3 -static -pthread \ -Wl,--whole-archive -lpthread -Wl,--no-whole-archive
追加メモ:
WL_WHOLE_ARCHIVE_HACK="-Wl,--whole-archive" WL_NO_WHOLE_ARCHIVE_HACK="-Wl,--no-whole-archive" AC_SUBST(WL_WHOLE_ARCHIVE_HACK) AC_SUBST(WL_NO_WHOLE_ARCHIVE_HACK) mytarget_LDADD = @WL_WHOLE_ARCHIVE_HACK@ -lpthread @WL_NO_WHOLE_ARCHIVE_HACK@
以上が静的リンクと Pthread を使用した C プログラムでセグメンテーション違反が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。