実行可能ファイルexecutable.exeと一緒にリンクしている2つのサードパーティライブラリA.soとB.soがあります。A.soには、B.soによって対処されるバグが含まれています。つまり、次のようになります。
A::subroutine1()
呼び出されたときに浮動小数点例外でクラッシュする可能性があります(FP演算バグ)B::subroutine1()
は固定実装であり、の代わりに常に呼び出す必要がありA::subroutine1()
ます。
AとBの正しいリンク順序は何ですか?私が今していることは:
ifort <....> executable.exe <...> -lA -lB
私はまだ時々浮動小数点例外を受け取ります(エラーは正確に再現できないので、デバッグするのはかなり難しいです)。ただし、クラッシュすると、プログラムはA :: subroutine1()が違反者であることを通知します。そのため、何らかの理由で間違ったバージョンのsubroutine1()がリンクされます。
これで最初のスタブとしてリンク順序を反転しますが、executable.exeを検査して実行時に呼び出されるsubroutine1()のバージョンを確認するために使用できるツールはありますか?
ありがとう!