0
私は最も簡単な実行ファイルを-fsanitize = addressオプションでclangを使ってコンパイルしようとしています。 clangを使って直接行うのはとても簡単です。しかし私の主張はCMakeを通してそれをすることです。CMakeでLLVMアドレスのサニタイザー
私はそれをやっています。 CMakeLists.txtファイル:
cmake_minimum_required(VERSION 3.5.1 FATAL_ERROR)
project(TestSanitizer VERSION 0.1.0 LANGUAGES CXX)
add_executable(Test main.cpp)
target_compile_options(Test PUBLIC
-std=c++17
-Werror
-Weverything
-Wno-c++98-compat
-Wno-c++98-c++11-c++14-compat
-Wno-c++98-compat-pedantic
-fsanitize=address)
main.cppに:
int main(int, const char**) { return 0; }
configureとbashスクリプト(config_gen_build.sh)を使用して行います。最後に
if [ -d "bin" ]; then
rm -rf bin
fi
mkdir bin
cd bin
#config and gen
export CC=/usr/bin/clang-5.0
export CXX=/usr/bin/clang++-5.0
cmake ./../
#build
make
何が問題なのですか?え? ライブラリにリンクする必要がありますか?
コンパイラオプションとリンカオプションの両方として、-fsanitize = addressが必要です。 –
それは答え、ありがとう。 あなたはそれを回答の追加として追加できます。私はそれを承認します。 –