8 Star 0 Fork 20

src-openEuler/abseil-cpp

补丁提交:低版本gcc编译报错:error: 'max_align_t' is not a member of 'std'

已完成
缺陷
创建于  
2023-06-07 10:59

【标题描述】gcc4.8.1编译abseil-cpp源码时,报错error: 'max_align_t' is not a member of 'std'
【环境信息】
使用的abseil-cpp源码:
https://gitee.com/src-openeuler/abseil-cpp/tree/openEuler-22.03-LTS-SP1-release/
gcc版本:4.8.1
参考https://github.com/abseil/abseil-cpp/issues/1470
【问题复现步骤】
具体操作步骤:gcc4.8.1编译abseil-cpp源码时,报错error: 'max_align_t' is not a member of 'std'
必现
【预期结果】
编译通过
【实际结果】
编译失败
【附件信息】
输入图片说明
输入图片说明
【修复方案】
为absl/meta/type_traits.h新建了补丁:

--- a/absl/meta/type_traits.h	2023-06-02 18:43:22.754151497 +0800
+++ b/absl/meta/type_traits_new.h	2023-06-02 18:37:25.366207927 +0800
@@ -49,11 +49,19 @@
 
 // Defines the default alignment. `__STDCPP_DEFAULT_NEW_ALIGNMENT__` is a C++17
 // feature.
+#if defined(__GNUC__) && (__GNUC__ < 5)
+#if defined(__STDCPP_DEFAULT_NEW_ALIGNMENT__)
+#define ABSL_INTERNAL_DEFAULT_NEW_ALIGNMENT __STDCPP_DEFAULT_NEW_ALIGNMENT__
+#else  // defined(__STDCPP_DEFAULT_NEW_ALIGNMENT__)
+#define ABSL_INTERNAL_DEFAULT_NEW_ALIGNMENT alignof(max_align_t)
+#endif  // defined(__STDCPP_DEFAULT_NEW_ALIGNMENT__)
+#else
 #if defined(__STDCPP_DEFAULT_NEW_ALIGNMENT__)
 #define ABSL_INTERNAL_DEFAULT_NEW_ALIGNMENT __STDCPP_DEFAULT_NEW_ALIGNMENT__
 #else  // defined(__STDCPP_DEFAULT_NEW_ALIGNMENT__)
 #define ABSL_INTERNAL_DEFAULT_NEW_ALIGNMENT alignof(std::max_align_t)
 #endif  // defined(__STDCPP_DEFAULT_NEW_ALIGNMENT__)
+#endif
 
 namespace absl {
 ABSL_NAMESPACE_BEGIN

评论 (3)

梁嘉诚 创建了缺陷 2年前
openeuler-ci-bot 添加了
 
sig/Base-service
标签
2年前
梁嘉诚 修改了描述 2年前

根据上游社区信息,abseil-cpp目前支持的gcc版本最低为7.3.1,不建议使用低于该版本的gcc进行编译:
https://github.com/google/oss-policies-info/blob/main/foundational-cxx-support-matrix.md
同时结合报错信息分析,错误原因是max_align_t不在std中,gcc社区将max_align_t添加到std的时间是2013-06-11:https://github.com/gcc-mirror/gcc/commit/899e00ebb25c3cc6bf87bded44e217ce8c81ed9c
gcc-4.8.1发布于2013-05-31,将gcc切换到4.9.0及以上版本即可解决该错误。

kircher 任务状态待办的 修改为已完成 2年前
梁嘉诚 修改了描述 2年前

登录 后才可以发表评论

状态
负责人
项目
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
预计工期 (小时)
参与者(3)
5329419 openeuler ci bot 1632792936 7998977 liangjia cheng home 1598839081 sherlock2010-sherlock2010
1
https://gitee.com/src-openeuler/abseil-cpp.git
git@gitee.com:src-openeuler/abseil-cpp.git
src-openeuler
abseil-cpp
abseil-cpp

搜索帮助