使用 ASAN 构建 glib 库
Building glib library with ASAN
我正在使用 ASAN 构建 glib 库,gcc 版本是 6.3。
我能够使用 ASAN 编译和构建 glib 库。我的配置命令是:-
../configure CC='/local/test/v6.3.0/bin/gcc' CXX='/local/test/v6.3.0/bin/g++' CFLAGS='-fPIC -O2 -fsanitize=address' CXXFLAGS='-fPIC -fsanitize=address' LDFLAGS='-L/local/test/v6.3.0/lib64 -lasan' LD_LIBRARY_PATH='/local/test/v6.3.0/lib64' --enable-static=yes --prefix=/home/testing/debug_glib/glib-2.56.1/testing_glb --enable-libmount=no PYTHON=/local/test/pkgs/python/v2.7.6/bin/python --with-pcre=/home/testing/pcre_lib/pcre-8.20/pcre_library
在这里,当我尝试使用新创建的 glib 库时,我遇到了未定义的符号引用问题:
$ /local/test/client_new/test_build/kkl/tools/kenzip -c dcltotb.tcl
/home/testing/lib/libglib-2.0.so: undefined symbol: __asan_option_detect_stack_use_after_return
我正在链接其中定义了上述符号的 ASAN 库 (-lasan)。这里缺少任何东西吗?请帮忙!
提前致谢。
构建最新版本的 GLib (2.62.4)。它是使用 Meson 而不是 autotools 构建的,您可以在配置构建时 enable ASAN by passing -Db_sanitize=address
to meson
。
首先您需要将您的LDFLAGS
更正为
LDFLAGS=-fsanitize=address
然后,您需要在 运行 未清理时预加载 libasan
可执行
LD_PRELOAD=path/to/libasan.so /local/test/client_new/test_build/kkl/tools/kenzip -c dcltotb.tcl
我正在使用 ASAN 构建 glib 库,gcc 版本是 6.3。
我能够使用 ASAN 编译和构建 glib 库。我的配置命令是:-
../configure CC='/local/test/v6.3.0/bin/gcc' CXX='/local/test/v6.3.0/bin/g++' CFLAGS='-fPIC -O2 -fsanitize=address' CXXFLAGS='-fPIC -fsanitize=address' LDFLAGS='-L/local/test/v6.3.0/lib64 -lasan' LD_LIBRARY_PATH='/local/test/v6.3.0/lib64' --enable-static=yes --prefix=/home/testing/debug_glib/glib-2.56.1/testing_glb --enable-libmount=no PYTHON=/local/test/pkgs/python/v2.7.6/bin/python --with-pcre=/home/testing/pcre_lib/pcre-8.20/pcre_library
在这里,当我尝试使用新创建的 glib 库时,我遇到了未定义的符号引用问题:
$ /local/test/client_new/test_build/kkl/tools/kenzip -c dcltotb.tcl
/home/testing/lib/libglib-2.0.so: undefined symbol: __asan_option_detect_stack_use_after_return
我正在链接其中定义了上述符号的 ASAN 库 (-lasan)。这里缺少任何东西吗?请帮忙! 提前致谢。
构建最新版本的 GLib (2.62.4)。它是使用 Meson 而不是 autotools 构建的,您可以在配置构建时 enable ASAN by passing -Db_sanitize=address
to meson
。
首先您需要将您的LDFLAGS
更正为
LDFLAGS=-fsanitize=address
然后,您需要在 运行 未清理时预加载 libasan 可执行
LD_PRELOAD=path/to/libasan.so /local/test/client_new/test_build/kkl/tools/kenzip -c dcltotb.tcl