MacOS - clang 地址清理程序无法链接

标签 macos cmake clang linker-errors address-sanitizer

我一直在尝试使用 Clang 的地址代码清理器,但链接器没有它。链接器可能是“ld”,尽管我的 CMAKE 设置向我保证 clang 是链接器。

已添加 -fsanitize=address编译器和链接器标志。

错误:

Undefined symbols for architecture x86_64:
___asan_after_dynamic_init
...
___asan_before_dynamic_init
...
etc.
ld: symbol(s) not found for architecture x86_64    <<<< **suspicious**
clang: error: linker command failed with exit code 1 (use -v to see invocation)

  • 环境:MacOS
  • clang:Apple LLVM 版本 8.0.0 (clang-800.0.38)
  • cmake:3.7.1
  • CMAKE_CXX_COMPILER =/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++(重定向到 clang)
  • CMAKE_CXX_COMPILER_ID = clang
  • 编译器标志:-O0 -g -fsanitize=地址
  • CMAKE_LINKER =/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++(重定向到 clang)
  • CMAKE_CXX_LINK_EXECUTABLE = CMAKE_CXX_COMPILER 标志 CMAKE_CXX_LINK_FLAGS LINK_FLAGS 对象 -o 目标 LINK_LIBRARIES
  • CMAKE_CXX_LINK_FLAGS = -Wl,-search_paths_first -Wl,-headerpad_max_install_names -fsanitize=地址 -v
  • 最佳答案

    来自 here 的解决方案

    Pass the -fsanitize=address flag to the linker as well as the compiler.



    -DCMAKE_EXE_LINKER_FLAGS="-fsanitize=address"

    关于MacOS - clang 地址清理程序无法链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46900598/

    相关文章:

    c++ - 构建库 OSX 时找不到 'gflags/gflags.h'

    visual-studio - 在 Windows 上的 C++ 应用程序中使用 PyTorch 模型

    xcode - 如何调整swift表达式编译超时?

    c++ - std::initializer_list 在 clang 范围结束之前析构包含的对象

    macos - 为 macOS 上的 Qt 提供深色模式图标

    swift - Realm 服务器对象不正确的线程异常

    macos - D 编译器 DMD 不链接目标文件

    从 shell 启动的仪器的 iPhone(硬件?)id

    c - 使用 cmake 时未定义外部变量的引用

    c++ - 如何在 macOS 的旧扩展 clang 和 gcc 编译器中初始化数组和 vector ?