Google 的 V8 是否需要 C++14 标准?
Does Google's V8 require C++14 standard?
我目前正在尝试构建 Google 的 V8 引擎,遵循它的 official documents。
我在这里遇到了一些错误:
- 需要更新的 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
- 一些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);
}
在查看其构建过程时,我发现它实际上使用了带有 -std=c++14
标志的 third_party/llvm-build/Release+Asserts/bin/clang++
。
所以我想知道是否可以使用一些旧的 gcc(例如 gcc 4.4.6/4.8.5)构建 V8 引擎?
遗憾的是,您无法使用旧版 gcc 构建 C++14 代码。
As here shown,您可以使用兼容 C++14 的 gcc 5.0 构建 C++14。
编辑:实际上,在您的平台上下载 gcc 5.0 并用您当前的 gcc 版本编译它,然后用这个更新的编译器编译 V8 会更容易。
是的,V8 目前需要 C++14。
预计未来的变化将朝着要求 C++17 的方向发展(尽管目前还没有时间表),而不是回到旧的 C++ 标准。
我目前正在尝试构建 Google 的 V8 引擎,遵循它的 official documents。
我在这里遇到了一些错误:
- 需要更新的 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
- 一些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); }
在查看其构建过程时,我发现它实际上使用了带有 -std=c++14
标志的 third_party/llvm-build/Release+Asserts/bin/clang++
。
所以我想知道是否可以使用一些旧的 gcc(例如 gcc 4.4.6/4.8.5)构建 V8 引擎?
遗憾的是,您无法使用旧版 gcc 构建 C++14 代码。
As here shown,您可以使用兼容 C++14 的 gcc 5.0 构建 C++14。
编辑:实际上,在您的平台上下载 gcc 5.0 并用您当前的 gcc 版本编译它,然后用这个更新的编译器编译 V8 会更容易。
是的,V8 目前需要 C++14。
预计未来的变化将朝着要求 C++17 的方向发展(尽管目前还没有时间表),而不是回到旧的 C++ 标准。