私は、g ++で-fPICオプションを使用してC++静的ライブラリをコンパイルしています。最終的にはこのライブラリを他の静的ライブラリとリンクして動的ライブラリを形成するため、-fPICオプションを使用する必要があります。静的ライブラリをコンパイルするために-fPICを指定すると、実行時にセグメンテーション違反が発生するのはなぜですか?
静的ライブラリをローカルでテストすると、-fPICオプションを指定しないと完全に正常に動作します。しかし、ライブラリを-fPICでコンパイルするとすぐに、関数の1つを呼び出すときに実行時にセグメント化エラーが発生します。
静的ライブラリをコンパイルするために-fPICを使用すると、実行時にセグメンテーション違反が発生する理由は何ですか?
これは非常に一般的なことですが、あなたのコードに未定義の動作が含まれていると何かが起きる可能性があり、コンパイラフラグを変更すると、そのUBを新しい方法で悪用する可能性があります。 UBが関与している場合。ちょうど長時間の推測... –
それは私が思っていたラインに沿っている。私は-fPICでかなりの読書をしましたが、他の誰かがそのコードにランタイムエラーを報告するのを見つけることができませんでした(ほとんどの場合、問題の解決策である-fPICを含んでいました) –
再現性があり、コンパイル可能なテストケースを提供しています。それは問題の診断に役立ちます。 http://sscce.org –