2017-10-09 3 views
3

Pendant l'exécution bootstrap.bat gcc après l'extraction, je suis la prochaine erreur dans bootstrap.log:Bug possible dans Boost 1.65.1. lors de l'exécution bootstrap.bat gcc

... 
\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; 
    ^
... 

Modification boost_1_65_1\tools\build\src\engine\debugger.c:1128 j'obtenir une bonne construction.

Je trace la commande de compilation à boost_1_65_1\tools\build\src\engine\config_toolset.bat:204. Donc en ajoutant --std=c99 je peux aussi le résoudre (bien que j'obtienne des avertissements et que la compilation échoue). Je n'ai pas trouvé de rapport à https://svn.boost.org/trac10/search?ticket=on.

Est-ce que quelqu'un avec plus d'expérience peut confirmer cela? Et signalez-le, si nécessaire.

Windows 10 - 64bits. Mingw-w64 (gcc 4.8.3). Boost 1.65.1.

+2

Boost est un *** C++ *** chose, vous ne devriez probablement pas essayer de le compiler avec un compilateur C * tout mode *: -) – paxdiablo

+2

Vous avez raison. Mais j'ajoute l'option gcc à cause de ce Getting Started sur Windows (http://www.boost.org/doc/libs/1_62_0/more/getting_started/windows.html) et celui-ci (https: //gist.github. com/sim642/29caef3cc8afaa273ce6). Le jeu d'outils gcc est pour MinGW et Cygwin. –

+0

La norme C actuelle est ISO/CEI 9899: 2011, donc essayez '--std = c11' pour la partie C du code. Si cela fonctionne, vous pouvez déposer un bug que le script de construction est brocken/old. – deamentiaemundi

Répondre

1

Il y a un rapport de bogue pour ce problème: https://svn.boost.org/trac10/ticket/13252

Je ne produis pas, mais maintenant si quelqu'un tombe sur cette question et se demande s'il a été rapporté, il a.

En attendant alors qu'il est abordé, je pense que la meilleure façon d'obtenir passé, il est comme Black Arrow suggéré ci-dessus, pour aller au fichier: boost_1_65_1\tools\build\src\engine\debugger.c, ligne 1128, et le changement:

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

à:

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

enregistrer, puis exécutez bootsrtap gcc

+0

J'ai complètement oublié à ce sujet. J'ai classé et j'attendais une réponse. Merci, il devrait y avoir une référence. –