c++ - 使用 "--enable-vtable-verify"构建 Devtoolset 7 gcc

标签 c++ vtable gcc7 devtoolset

我的机器上安装了 devtoolset7 包

devtoolset-7-binutils-devel-2.28-11.el7.x86_64
devtoolset-7-runtime-7.1-4.el7.x86_64
devtoolset-7-binutils-2.28-11.el7.x86_64
devtoolset-7-gdb-8.0.1-36.el7.x86_64
devtoolset-7-libasan-devel-7.3.1-5.13.el7.x86_64
devtoolset-7-gcc-c++-7.3.1-5.13.el7.x86_64
devtoolset-7-libstdc++-devel-7.3.1-5.13.el7.x86_64
devtoolset-7-valgrind-3.13.0-11.el7.x86_64
devtoolset-7-gcc-7.3.1-5.13.el7.x86_64

我正在尝试使用 -fvtable-verify=std 构建二进制文件

不幸的是,devtoolset 7 提供的 gcc 不是用 --enable-vtable-verify 构建的

如何使用与 devtoolset 7 使用的配置类似的 --enable-vtable-verify 重建 devtoolset 7 gcc。

最佳答案

devtoolset 的全部意义在于保持与系统编译器及其较旧的 libstdc++.so.6 库的向后兼容。 --enable-vtable-verify 选项会创建一个具有不同 ABI 的不兼容的 C++ 运行时,它不能与任何未在启用 VTV 的情况下编译的现有库一起使用。

创建一个明确与系统编译器不兼容的 devtoolset 编译器(旨在与系统编译器兼容)是没有意义的。

如果您想使用 VTV,那么只需 build your own GCC from source并启用 VTV,但请注意,由该 GCC 编译的代码将与使用系统编译器 devtoolset 编译器编译的代码不兼容。

关于c++ - 使用 "--enable-vtable-verify"构建 Devtoolset 7 gcc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52788144/

相关文章:

c++ - 在 C++ 中将科学记数法转换为十进制

c++ - 避免重复的 C++ 虚拟表查找

c++ - std::async 与 gcc 7.2 需要 pthread 链接选项

c++ - 跨 DLL 边界传递没有 vtables 的 C++ 结构?

c++ - 为什么我使用 std::variant 获得 std::bad_variant_access?

数组迭代中的 CPU 空间缓存位置

c++ - 创建指针列表的正确范例是什么?

c++ - 使用 boost QT 和 mingw 的多线程

c++ - 等待主线程直到条件

c++ - Qt:未定义对 'vtable' 的引用