从 gcc/clang 获取 libasan 的位置

2024-03-14

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

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


您可以使用-print-file-name flag:

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

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

$ 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 gcc/clang 获取 libasan 的位置 的相关文章

  • 如何特别为特定模块指定 gcc 标志 (CXXFLAGS)?

    我最近正在构建一个新的 NS3 模块 在我的代码中 我使用了一些新功能C 11 c 0x 我想添加一个gcc标志 CXXFLAGS std c 0x to the waf配置系统 我尝试这样做 CXXFLAGS std c 0x waf c
  • 这是 GCC 中的错误还是我的代码错误?

    我有这个C代码 int test signed char anim col if anim col gt 31 return 1 else if anim col lt 15 return 2 return 0 使用 Android NDK
  • 在编译时将多个文件中的变量收集到单个连续的内存块中

    我想在多个 c 文件中定义 并初始化 结构体的多个实例 但我希望它们在编译时收集到一个连续的数组中 我一直在研究使用自定义部分并使用该部分的开始和结束地址作为结构数组的开始和结束 但我还没有完全弄清楚细节 而且我不想编写自定义部分链接器脚本
  • gcc 编译器忽略调试构建的未初始化变量警告

    gcc编译器忽略uninitialized variable warning用于调试构建 这对我来说看起来很奇怪 有人可以帮助我理解这一点吗 Program include
  • 在 GCC 中启用严格浮点模式

    我还没有创建一个程序来查看 GCC 是否需要它通过 当我这样做时 我想知道如何启用严格的浮点模式 这将允许在运行和计算机之间重现结果 谢谢 编译用 msse2在支持它的 Intel AMD 处理器上 您几乎就可以实现这一目标 不要让任何库将
  • 如何获取子进程的返回值?

    程序计算从 1 到 N 的数字之和 子进程计算偶数之和 父进程计算奇数之和 我想在父进程中获取子进程的返回值 我怎么做 include
  • glibc 已弃用的 __malloc_hook 功能的替代方案

    我正在为 C 编写一个内存分析器 并为此拦截对malloc realloc and free通过 malloc hooks 函数 不幸的是 这些已被弃用 因为它们在多线程环境中表现不佳 我找不到描述实现相同目标的替代最佳实践解决方案的文档
  • gcov 内存不足/版本不匹配?

    只是尝试让 gcov 启动并运行 出现以下错误 gcov src main c o build build main gcno version 404 prefer 407 gcov out of memory allocating 148
  • gcc 如何知道内联汇编中使用的寄存器大小?

    我有内联汇编代码 define read msr index buf asm volatile rdmsr d buf 1 a buf 0 c index 使用该宏的代码 u32 buf 2 read msr 0x173 buf 我发现反汇
  • x86-64 Linux 中不再允许使用 32 位绝对地址?

    64 位 Linux 默认使用小内存模型 将所有代码和静态数据置于 2GB 地址限制以下 这确保您可以使用 32 位绝对地址 旧版本的 gcc 对静态数组使用 32 位绝对地址 以便节省相对地址计算的额外指令 然而 这不再有效 如果我尝试在
  • jni.h:没有这样的文件或目录

    我一直在关注本教程 http www java tips org other api tips jni simple example of using the java native interface html 在第 5 步 我从 GCC
  • __get_cpuid 的可移植性如何?

    我在用着 get cpuid 获取有关的信息x86 and x86 64我的程序运行的处理器 在 Linux 和 Mac OS 上使用 GCC 似乎可以在不包含任何头文件的情况下编译和运行 但是它的可移植性如何 它可以与其他编译器一起使用吗
  • 在 Linux 上的 makefile 和 Makefile 之间进行选择

    我想在一个目录中同时使用 Makefile 和 makefile 进行 make 默认情况下 它将执行makefile 我可以选择执行 Makefile 吗 提前致谢 最简单的选择是使用 f make f Makefile From man
  • 使用 i386 arch 而不是 x86_64 在 OSX 上构建 libFLAC

    我正在尝试构建 libFLAC 以在我的项目中使用 但是当涉及到链接时 GCC 会忽略该库 因为它说它不是为当前体系结构 i386 构建的 当我以 64 位编译程序时 它正确链接了库 这意味着该库是针对 x86 64 架构编译的 不幸的是
  • STM32:从自定义引导加载程序跳转到应用程序时发生硬故障

    我正在开发带有自定义引导加载程序和应用程序的 STM32F401 MCU 编译器是GCC 5 2 1 没有运行优化 在以下跳转序列后的第一次中断后 我遇到了硬故障 引导加载程序 gt 应用程序 gt 引导加载程序 gt 应用程序 从引导加载
  • gcc 编译器开关 (-mavx -mavx2 -mavx512f) 到底有什么作用?

    我在 C C 代码中明确使用了英特尔 SIMD 内在扩展 为了编译代码 我需要在命令行上指定 mavx mavx512 或类似的内容 我对这一切都很满意 然而 从阅读 gcc 手册页来看 并不清楚这些命令行标志是否也告诉 gcc 编译器尝试
  • 字符串初始化的 gcc 诊断不一致

    我正在使用 gcc 4 9 1 Mingw 并使用以下命令编译代码 gcc test c otest exe std c11 迂腐错误 Wall Wextra 此代码给出诊断 int main void char a 5 h e l l o
  • 如何在 g++ 中使用不同的 STL

    我想对 g 使用不同的 STL 而不是其默认的 libstdc 做到这一点最简单的方法是什么 我发现 nostdinc 标志禁止 g 查找其 STL 标头 但这只是编译时的事情 它仍然会使 g 链接到它自己的 STL 所以我需要找到一种方法
  • 我可以让 C++ 编译器在编译时实例化对象吗?

    我正在编写一些代码 其中包含大量相当简单的对象 我希望它们在编译时创建 我认为编译器能够做到这一点 但我无法弄清楚如何做到 In C我可以执行以下操作 include
  • 为什么GCC不报告未初始化的变量?

    include

随机推荐

  • 使用 -classpath 运行时未检测到 Spring application.yml

    我是第一次使用 Spring 框架 特别是 Spring Boot 所以如果有一个明显的解决方案 请原谅我 在我的应用程序中 我有一个嵌入式 application yml 它为整个配置参数负载提供默认值 如果我使用以下命令运行 JAR 则
  • 模板只能与字段访问、属性访问、一维数组索引或单参数自定义索引器表达式一起使用

    我的型号 public class EmployeeModel Required StringLength 50 Display Name Employee Name public string EmpName get set Requir
  • Java将GIF图像转换为PNG格式

    我必须构建一个 Java servlet 它接收图像并返回转换为 PNG 格式的图像 我怎样才能实现这个目标 正如一些示例所示 转换并不是指更改文件扩展名 提前致谢 试试这个 package demo import javax imagei
  • R 中 %in% 运算符的 C++ 版本

    C 中有没有相当于的函数 in R 中的运算符 考虑 R 中的以下命令 which y in x 我试图在 C 中找到等效的东西 特别是在犰狳中 但我找不到任何东西 然后我编写了自己的函数 与上面的 R 命令相比 它非常慢 这是我写的 in
  • 目前使用 Rails 构建 Facebook 应用程序的资源有哪些? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找使用 Rails 构建一个基本的 Facebook 应用程序 您推荐哪些资源 书籍 播客 截屏视频 博客文章等 请每个帖子一个答
  • 使用 Pandas.rolling 计算滚动自相关

    我正在尝试使用 Pandas 0 23 3 计算 Series 对象的滚动自相关 设置示例 dt index pd date range 2018 01 01 2018 02 01 freq B data np random rand le
  • 在 Perl 中可以将一个数组的地址分配给另一个数组吗?

    在以下 C 代码中 int X new int 2 X 0 1 X 1 2 int Y X X 1 3 执行后 Y 1 也将为 3 因为操作 Y X 不会进行克隆 而是将 X 所指向的引用或指针分配给 Y 如果在 Perl 5 下尝试相同的
  • constexpr 函数内的编译时或运行时检测

    当 C 11 中引入 constexpr 时 我很兴奋 但不幸的是我对其有用性做出了乐观的假设 我假设我们可以在任何地方使用 constexpr 来捕获文字编译时常量或文字编译时常量的任何 constexpr 结果 包括如下所示 const
  • 更新推送接收时应用程序图标上的徽章计数 (IOS)

    我正在开发可以从服务器接收推送通知的应用程序 从服务器发送推送通知时 您可以指定要在应用程序图标上显示的徽章编号 现在这意味着您必须跟踪服务器上的徽章计数 这似乎不是一个好的方法 有没有什么好的替代方案 这样我就不需要跟踪服务器上的徽章编号
  • 在 NSView 上使用 NSPoint 鼠标跟踪

    我在 App Delegate 中有一个方法可以创建窗口和内容视图 但我希望能够在进入和退出视图时使用 NSPoint 跟踪鼠标 问题是我不想创建 NSView 自定义类 而是想在我的 AppDelegate 中完成这一切 鼠标跟踪 底部
  • 简单的 PowerShell LastWriteTime 比较

    我需要一个 PowerShell 脚本来访问文件的属性并发现最后写入时间属性并将其与当前日期进行比较并返回日期差 我有这样的东西 writedate Get ItemProperty Path source Name LastWriteTi
  • 使用 Android Studio 未选择渲染目标

    我的 Android Studio 在 Activity main xml 中显示此问题 渲染问题未选择渲染目标 帮助 您需要运行 AVD 管理器来添加与您的项目设置的目标 API 版本相匹配的虚拟设备 单击工具 gt Android gt
  • Maven:如何重命名项目的war文件?

    我有一个项目bird具有以下组件pom xml
  • 具有内联模型表单或表单集的基于 django 类的视图

    我有以下型号 class Bill models Model date models DateTimeField Date of bill null True blank True class Item models Model name
  • 未找到 JSF2.0 标签

    最近我一直在玩 JSF2 0 Richface 3 3 3 我使用 STS 作为我的 IDE 和 Maven 来构建我的项目 但不知何故我无法让以下 JSF2 0 标签工作 h button h link f 元数据 f viewParam
  • 如何解耦小部件的模型/视图

    我正在编写一个应用程序 用于绘制小部件 菜单 控件等以创建应用程序模型 每个屏幕都表示为小部件的集合 每个小部件都是简单的类 例如 class Model object def init self self widgets class Wi
  • 将长格式转换为宽格式

    id lt c 1 8 1 8 age1 lt c 7 5 6 7 8 6 9 5 8 7 6 3 9 5 age2 lt age1 round runif 1 1 3 1 age lt c age1 age2 tanner lt samp
  • ng-bootstrap 在 Angular 4 中不起作用

    我是 Angular 4 的新手 我正在尝试配置引导程序 我安装了 ng bootstrap https ng bootstrap github io getting started https ng bootstrap github io
  • 为 C++ 配置 Vim

    我想让 vim 成为我的 C 编辑器 我对此的使用经验很少 并需要帮助配置 vim 以使用 C 我需要这样的功能 代码完整 对于 stl 和我的课程 在 cc 和 h 文件之间切换 作为 C 和 Vim 大师 您可能还有更多技巧 也许您可以
  • 从 gcc/clang 获取 libasan 的位置

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