2016-07-28 7 views
0

コードが-O3でコンパイルされ、g ++で-O1の最適化レベルではない場合にのみ表示される問題をデバッグしています。コードのクライアント側は私のチームが所有していますが、私たちが呼び出している関数は別のチームが所有し、共有ライブラリ内で提供されています。コードが-O1でコンパイルされて関数を呼び出すと、そのコードは機能します。しかし、コードが-O3でコンパイルされて関数を呼び出すと、関数は引数として渡す構造体の妥当性についてエラーを返します。異なる最適化レベルでコンパイルされたオブジェクトファイルをリンクできますか?

共有ライブラリをコンパイルするときに使用されるさまざまな最適化レベルと、クライアント側のコードとの間で問題が発生している可能性があるのでしょうか。

答えて

3

異なる最適化レベルは完全に合法です。最も可能性が高い理由は、メモリリークがあり、コードの動作がさまざまな最適化によって異なります。

関連する問題