2011-12-13 14 views
0

は、私はこれらのエラーを取得:GCC stdio.hのエラー

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()’ 

GCC 4.6.1、-O2がオンになっている場合にのみ発生します。何が間違っていますか?私はすべてのヘッダーガードをチェックして、OKと思われる。

+1

あなたのディストリビューションは何ですか?あなたの 'foo.c'プログラムは何ですか? 'gcc'はあなたのディストリビューションによってパッケージ化されていますか? –

+0

コマンドライン全体を表示して、-Dなどがある可能性が高いことがありますか? –

+1

あなたがコンパイルしたソースファイルが_just_ ''#include ''で構成されている場合、これは起こりますか?そうでない場合は、それを実現するために何を追加する必要がありますか? – zwol

答えて

-1

-O2を使用する理由はありますか? -O2の代わりに-O [または-O1]を実行しますか? -O2を本当に使用する必要があり、「犯人フラグ」を絞りたい場合は、-O1を使用し、-O2に使用されるフラグを1つずつ順番にgccにオンにすることをお勧めします。 -O2が使用するフラグのリストを次に示します。

 -fthread-jumps 
     -falign-functions 
     -falign-jumps 
     -falign-loops 
     -falign-labels 
     ... // there is a big list 

これらのフラグはgcc manual on optimization'sにあります。マニュアルには、各フラグとその目的の詳細な説明が記載されていなければなりません。

+0

* gccの '-O'レベルのどれも、' -f'スイッチの任意の組み合わせと同じではありません(より正確には、 '-f'スイッチの束を設定するだけではありません)。 – zwol

関連する問題