Boost 1.65.1中可能存在的错误。在运行bootstrap.bat gcc时

时间:2017-10-09 01:12:09

标签: c++ c gcc boost

在解压缩后运行bootstrap.bat gcc时,我在bootstrap.log中遇到了下一个错误:

...
 \boost_1_65_1\tools\build\src\engine>.\bootstrap\jam0 -f build.jam
 --toolset=gcc "--toolset-root= "   
 ...found 161 targets... 
 ...updating 3 targets... 
 [MKDIR] bin.ntx86_64 
 [COMPILE] bin.ntx86_64\b2.exe
 debugger.c: In function 'debug_start_child': 
 debugger.c:1128:5: error:
 'for' loop initial declarations are only allowed in C99 mode
      for ( int i = 1; i < argc; ++i )
      ^
 debugger.c:1128:5: note: use option -std=c99 or -std=gnu99 to compile your code 
 strings.c: In function 'string_rtrim':
 strings.c:195:5: warning: ISO C90 forbids mixed declarations and code
 [-Wpedantic]
      char * p = self->value + self->size - 1;
      ^
 ...

修改boost_1_65_1\tools\build\src\engine\debugger.c:1128我得到了正确的构建。

我跟踪编译命令boost_1_65_1\tools\build\src\engine\config_toolset.bat:204。所以通过添加--std=c99我也可以解决它(虽然我收到警告和编译失败)。

我没有在https://svn.boost.org/trac10/search?ticket=on找到报告。

有经验的人可以证实这一点吗?如有必要,请报告。

Windows 10 - 64位。 Mingw-w64(gcc 4.8.3)。 提升1.65.1。

1 个答案:

答案 0 :(得分:1)

此问题有错误报告:https://svn.boost.org/trac10/ticket/13252

我没有提交,但现在如果有人遇到这个问题并想知道是否有报道,那就有。

与此同时,在解决这个问题的过程中,我认为最简单的方法是通过上面的Black Arrow建议,转到文件:boost_1_65_1\tools\build\src\engine\debugger.c,第1128行,然后更改:

for ( int i = 1; i < argc; ++i )

为:

int i;
for ( i = 1; i < argc; ++i )

保存,然后运行bootsrtap gcc