我在编译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。会出什么问题呢?我检查了所有的头卫,他们看起来都还好。
发布于 2011-12-14 04:19:40
使用-O2有很好的理由吗?会用-O或-O1代替-O2吗?如果你真的需要使用-O2,并希望缩小“罪魁祸首标志”的范围,一个建议是使用-O1,然后逐个打开用于-O2的gcc标志。以下是-O2使用的标志列表。
-fthread-jumps
-falign-functions
-falign-jumps
-falign-loops
-falign-labels
... // there is a big list 您可以在gcc manual on optimization's中找到这些标志。手册应对每面旗帜及其用途进行详细说明。
https://stackoverflow.com/questions/8495408
复制相似问题