私は最近、かなりの時間を費やして、ライブラリをコンパイルすることによって引き起こされたことが判明した問題を追跡しました-D_GLIBCXX_DEBUG
(これは libstdc++ に追加チェック付きの標準ライブラリのデバッグ バージョンを使用するように指示します)。これにより、ABI の互換性の問題が発生しました。
GCC でこのような問題を自動的に検出する方法はありますか? Visual Studioには、この目的に役立つと思われるdetect_mismatch
プラグマが用意されていますが、GCC に相当するものは知りません。GCC はシンボル名 (例: ) を埋め込むことで何かを行いGLIBCXX_3.4.9
ます。対応するシンボル (例: ) が存在しない場合、未定義のシンボルが原因でリンク エラーが発生するスキームを想像mylib_debug_stl
できますが、そのシンボルの使用は本当にハックです。
あるいは、他の人はこの問題をどのように回避しますか? ライブラリのチェック済みバージョンを別の名前またはそのようなものにビルドしますか?