c++ - 我如何要求 GCC 使用不同的标准库?

标签 c++ linux gcc c++-standard-library

我在 /usr/lib/debug/usr/lib/x86_64-linux-gnu/ 中有一个 libstdc++ 6 的调试版本。 我想告诉 gcc/g++ 使用这个库而不是没有调试符号的标准库版本。 我尝试使用 -nostdlib 并使用 -L 显式传递库路径,但出现链接错误,例如

/usr/bin/ld: CMakeFiles/tst_elfmap.dir/perfparser/tests/auto/elfmap/tst_elfmap.cpp.o: undefined reference to symbol '__gxx_personality_v0@@CXXABI_1.3'
//usr/lib/x86_64-linux-gnu/libstdc++.so.6: error adding symbols: DSO missing from command line

看来我的系统上安装的 libstdc++ 的调试版本和发布版本的库版本(根据文件名)是相同的:

lrwxrwxrwx 1 root 19 Oct  4  2019 /usr/lib/x86_64-linux-gnu/libstdc++.so.6 -> libstdc++.so.6.0.21

最佳答案

您应该使用LD_LIBRARY_PATH环境变量,例如:

export LD_LIBRARY_PATH=/usr/lib/debug/usr/lib/x86_64-linux-gnu/

此变量可用于更改动态链接器搜索路径,因此,将沿着 搜索 libstdc++,而不是在系统的库路径中搜索 libstdc++ LD_LIBRARY_PATH

关于c++ - 我如何要求 GCC 使用不同的标准库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64384404/

相关文章:

c++ - 连接失败后如何清理套接字?

c++ - 编译时警告

c - 为什么arm-linux-gcc在进入IRQ模式时只保留r0-r4

c - 使用内联汇编加速矩阵乘法

c - 包含不导入的指令

c++ - 在 C++ 中支持 cuda 的错误 opencv

c++ - 是否可以使生成的 doxygen 输出看起来像 msdn 样式文档(可能是 sandcaSTLe 生成的)?

linux - xargs 的 $1 与 shell 脚本中的 $1 冲突

regex - 递归查找和替换(某些文件除外)

linux - Linux下可视化内存调试应用?