1

我无法使用 MinGW 4.8.1 编译 clang(3.3)。当 70% 构建完成时,总是会弹出以下错误:

在此处输入图像描述

4

1 回答 1

0
  1. clang/lib/Basic/FileManager.cpp包括sys/stat.h,它定义#define stat _stat64i32(实际上在两者之间还有一些其他定义,但你明白了;)
  2. clang/include/clang/Basic/FileManager.h不包括sys/stat.h;相反,只有一个前向声明。
  3. 因此,在解析标头时,使用前向声明 ( struct stat)
  4. 但是当它最终到达实现时,预处理器将启动并替换struct statstruct stat64i32. 因此不匹配。

最好的解决方案是将标头中的前向声明更改为 include sys/stat.h。(我实际上并没有测试它是否会编译)

当前主干不再包含代码。

更新:关于off64_t. _mingw_off_t.h这在这些天被定义为:

#ifndef _OFF64_T_DEFINED                                                           
#define _OFF64_T_DEFINED                                                           
  __MINGW_EXTENSION typedef long long _off64_t;                                    
#if !defined(NO_OLDNAMES) || defined(_POSIX)                                                                                                                                                                
  __MINGW_EXTENSION typedef long long off64_t;                                     
#endif                                                                             
#endif /*_OFF64_T_DEFINED */

所以你可能想_POSIX在包含io.h(或stdio.h)之前定义

于 2013-09-06T23:21:52.550 回答