67

私は自分のプロジェクトを構築しようとしています

g++ -O0 -g -fsanitize=address -fno-omit-frame-pointer

しかし、次のような多くのエラーが発生します。

/home/user/libs/opencv/include/opencv2/core/mat.hpp:715: undefined reference to `__asan_report_load8'

AddressSanitize サポートを使用してプロジェクトをコンパイルするには?

私の gcc バージョンは 4.8.4 です。

4

3 に答える 3

141

-fsanitize=addressコンパイラ フラグ ( と の両方CFLAGS)CXXFLAGSとリンカー フラグ ( )を追加する必要がありますLDFLAGS。おそらくコンパイラフラグのみに追加したでしょう。

明示的なオプションを使用することは、他の重要なリンカー フラグが-lasan欠落しているため、ASan 開発者 (例:ここ) によって広く推奨されていないことに注意してください。リンクする唯一の推奨される方法は、 を使用すること-fsanitize=addressです。

補足として、より積極的な検証フラグについては、Asan FAQを確認してください(「より積極的な診断」を探してください)。

于 2016-10-24T10:03:57.307 に答える
2

正しいライブラリをリンクするには、コンパイルリンクの両方のコマンド ラインにスイッチを追加する必要があります。-lasan -fsanitize=address

注:元の回答 -lasan は古くなっているため、コメントに従って使用しないでください

于 2016-06-22T14:29:19.133 に答える