首页 > 解决方案 > Google 的 V8 是否需要 C++14 标准?

问题描述

我目前正在尝试按照其官方文档构建 Google 的 V8 引擎。

我在这里遇到一些错误:

  1. 需要更新的 glibc
    python ../../tools/run.py ./bytecode_builtins_list_generator gen/builtins-generated/bytecodes-builtins-list.h
    ./bytecode_builtins_list_generator: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ./bytecode_builtins_list_generator)
    Return code is 1
    [115/1639] CXX obj/torque_base/torque-parser.o
    
  2. 一些 C++14 语法 比如在 include/v8-internal.h 中有一个std::remove_cv_t
    template <class T>
    V8_INLINE void PerformCastCheck(T* data) {
      CastCheck<std::is_base_of<Data, T>::value &&
                !std::is_same<Data, std::remove_cv_t<T>>::value>::Perform(data);
    }
    

在查看它的构建过程时,我发现它实际上third_party/llvm-build/Release+Asserts/bin/clang++与一个-std=c++14标志一起使用。

所以我想知道我是否可以用一些旧的 gcc 构建一个 V8 引擎,比如 gcc 4.4.6/4.8.5?

标签: c++chromiumv8embedded-v8

解决方案


是的,V8 目前需要 C++14。

预计未来的变化将朝着需要 C++17 的方向发展(尽管还没有时间表),而不是回到旧的 C++ 标准。


推荐阅读