CPP 随笔
Knowledge
C++, Notes
Word Count: 194(words)
Read Count: 1(minutes)
记录cpp编程过程中的一些总结
clang + libstdc++ debug 问题
众所周知 LLVM 的 libc++ 和 GNU 的 libstdc++ 是两个不同的标准库实现。虽然使用 clang + libstdc++ 编译也可以使用 LLDB 对程序进行 debug,但是字符串以及一些数据结构如 unordered_map 无法正确显示值。解决方式:
- 使用编译选项 “-fstandalone-debug”
- 在编译和链接时换为
libc++, cmake 中可以使用 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++") 来解决。
cheatsheet: cmake 中切换到 llvm 全套 C++ 工具链
1 2 3 4 5 6 7 8 9
| if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") set(CMAKE_CXX_FLAGS "-stdlib=libc++") set(CMAKE_LINKER_TYPE LLD) set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=lld") set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fuse-ld=lld") set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -fuse-ld=lld") endif ()
|