gpt4 book ai didi

gcc - 从 gcc/clang 获取 libasan 的位置

转载 作者:行者123 更新时间:2023-12-01 22:41:42 27 4
gpt4 key购买 nike

当我使用 -fsanitize=address 进行编译时,GCC/Clang 隐式使用 ASAN 动态库,该库为 ASAN 提供运行时支持。如果您构建的库是由另一个应用程序动态加载的,则需要设置LD_PRELOAD以包含此动态库,以便它在应用程序启动时运行。

GCC/Clang 期望使用哪个 libasan.so 副本通常并不明显,因为您的系统上可能有多个 ASAN 副本(如果您安装了多个编译器)。确定需要加载的共享库位置的可靠方法?

最佳答案

您可以使用-print-file-name标志:

GCC_ASAN_PRELOAD=$(gcc -print-file-name=libasan.so)
CLANG_ASAN_PRELOAD=$(clang -print-file-name=libclang_rt.asan-x86_64.so)

您还可以通过ldd从库本身提取libasan路径:

$ echo 'void foo() {}' | gcc -x c -fPIC -shared -fsanitize=address -
$ ldd a.out | grep libasan.so | awk '{print $3}'
/usr/lib/x86_64-linux-gnu/libasan.so.4

关于gcc - 从 gcc/clang 获取 libasan 的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48833176/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com