首页 > 解决方案 > PowerPC ppc64le 上的 Gcc Woverloaded-virtual 错误

问题描述

我正在努力构建Istio-envoy. rhel7.6:ppc64le构建通过,但是有测试失败:

错误:

In file included from test/server/filter_chain_benchmark_test.cc:19:0:`
`bazel-out/ppc-fastbuild/bin/external/com_github_google_benchmark/_virtual_includes/benchmark/benchmark/benchmark.h:1071:16: error: 'virtual void benchmark::Fixture::SetUp(benchmark::State&)' was hidden [-Werror=overloaded-virtual]`
   `virtual void SetUp(State& st) { SetUp(const_cast<const State&>(st)); }`
            `    ^~~~~`
`test/server/filter_chain_benchmark_test.cc:152:8: error:   by 'virtual void` `Envoy::Server::FilterChainBenchmarkFixture::SetUp(const benchmark::State&)' [-Werror=overloaded-virtual]
   void SetUp(const ::benchmark::State& state) override {
        ^~~~~`

错误文件的链接https://github.com/istio/envoy/blob/release-1.3/test/server/filter_chain_benchmark_test.cc#L150

请帮我调试错误。

标签: c++overloadingvirtual-functionspowerpcrhel7

解决方案


调试中使用的一项关键技术是Wolf Fence 算法的应用。在这种情况下,我会使用这个调试算法。这种算法通常也称为二分法。

我建议以这种方式开始:

大多数 Envoy 开发都发生在 Ubuntu 18.04 上的 amd64 上。根据我的经验,RHEL7 落后于 Power 工具链的上游大师。此外,根据我的经验,Ubuntu 18.04 有一个更新的工具链。

作为 Istio 项目的众多维护者之一,您肯定至少需要 glibc 2.18,正如我直接参与的 Envoy 邮件列表线程中所讨论的那样。该线程中发生的调试表明 RHEL7 包含 glibc 2.17。


推荐阅读