• llvm-3.4.2 编译失败 解决方案


    编译时报错如下:

    In file included from $HOME/opt/workspace/doris/incubator-doris/thirdparty/src/llvm-3.4.2.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc:196:0:
    $HOME/opt/workspace/doris/incubator-doris/thirdparty/src/llvm-3.4.2.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h:307:72: error: size of array 'assertion_failed__1093' is negative
         typedef char IMPL_PASTE(assertion_failed_##_, line)[2*(int)(pred)-1]
                                                                            ^
    $HOME/opt/workspace/doris/incubator-doris/thirdparty/src/llvm-3.4.2.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_internal_defs.h:301:30: note: in expansion of macro 'IMPL_COMPILER_ASSERT'
     #define COMPILER_CHECK(pred) IMPL_COMPILER_ASSERT(pred, __LINE__)
                                  ^~~~~~~~~~~~~~~~~~~~
    $HOME/opt/workspace/doris/incubator-doris/thirdparty/src/llvm-3.4.2.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h:1472:3: note: in expansion of macro 'COMPILER_CHECK'
       COMPILER_CHECK(sizeof(__sanitizer_##TYPE) == sizeof(TYPE))
       ^~~~~~~~~~~~~~
    $HOME/opt/workspace/doris/incubator-doris/thirdparty/src/llvm-3.4.2.src/projects/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.cc:1093:1: note: in expansion of macro 'CHECK_TYPE_SIZE'
     CHECK_TYPE_SIZE(__kernel_fd_set);
    
    

    看上去似乎是有点静态检查失败了。

    看一下__kernel_fd_set的定义:$GCCHOME/include/linux/posix_types.h

    #undef __NFDBITS
    #define __NFDBITS   (8 * sizeof(unsigned long))
    
    #undef __FD_SETSIZE
    #define __FD_SETSIZE    51200
    
    #undef __FDSET_LONGS
    #define __FDSET_LONGS   (__FD_SETSIZE/__NFDBITS)
    
    #undef __FDELT
    #define __FDELT(d)  ((d) / __NFDBITS)
    
    #undef __FDMASK
    #define __FDMASK(d) (1UL << ((d) % __NFDBITS))
    
    typedef struct {
        unsigned long fds_bits [__FDSET_LONGS];
    } __kernel_fd_set;
    

    果然最大fd数量是 51200

    在能编译过的机器(ubuntu 18.04)上这个值是: 1024

    #undef __FD_SETSIZE
    #define __FD_SETSIZE    1024
    
    typedef struct {
        unsigned long fds_bits[__FD_SETSIZE / (8 * sizeof(long))];
    } __kernel_fd_set;
    

    然后修改一下__sanitizer___kernel_fd_set

    typedef struct {
    	unsigned long fds_bits[1024 / (8 * sizeof(long))];
    } __sanitizer___kernel_fd_set;
    

    改好之后,就能编译了

  • 相关阅读:
    AS2 tween缓动
    flash 绑定 swc类文件
    jsfl自运行与被调运行
    一键清除fla文件中的TLF文本
    as 2的 Event.REMOVED_FROM_STAGE
    jsfl 添加代码
    jsfl 删除库指定内容
    文件上传待研究
    SpringMVC单文件上传、多文件上传、文件列表显示、文件下载
    shiro配置参考(二)可以和mybatis的配置放在一个文件中(不建议这样,可以拆分开来,注意相关配置即可)
  • 原文地址:https://www.cnblogs.com/stdpain/p/13874399.html
Copyright © 2020-2023  润新知