编译gcc -c -O2...
时出现这些错误:
In file included from /usr/include/stdio.h:930:0,
from /home/martin/foo.c:3:
/usr/include/x86_64-linux-gnu/bits/stdio2.h: In function ‘sprintf’:
/usr/include/x86_64-linux-gnu/bits/stdio2.h:34:3: error: invalid use of ‘__builtin_va_arg_pack ()’
/usr/include/x86_64-linux-gnu/bits/stdio2.h: In function ‘snprintf’:
/usr/include/x86_64-linux-gnu/bits/stdio2.h:65:3: error: invalid use of ‘__builtin_va_arg_pack ()’
仅在-O2
打开时才会发生,gcc 4.6.1。有什么不对?我已经检查了所有的标头警卫,看起来没问题。
答案 0 :(得分:-1)
是否有充分的理由使用-O2
?将-O
[或-O1
]代替-O2
。如果你真的需要使用-O2
并希望缩小'罪魁祸首标志',一个建议就是使用-O1
,然后逐个启用gcc
标记,用于-O2
1}}。以下是-O2
使用的标记列表。
-fthread-jumps
-falign-functions
-falign-jumps
-falign-loops
-falign-labels
... // there is a big list
您可以在gcc manual on optimization's中找到这些标记。手册应详细说明每个标志及其用途。