私は原因を発見するために多くの努力を払っていませんが、gcc 4.8.1 では、c と c++ を組み合わせた古いソースと c++11 のいくつかの新しいものをコンパイルするのに多くの問題が発生しています。
このコードで問題を切り分けることができました。
# include <argp.h>
# include <algorithm>
g++ -std=c++0x -c -o test-temp.o test-temp.C
バージョン4.6.3、ubuntu 12.04で正常にコンパイルされます
対照的に、バージョン 4.8.1 では、同じコマンド ラインで多くのエラーがスローされます。
In file included from /home/lrleon/GCC/lib/gcc/x86_64-unknown-linux-gnu/4.8.1/include/x86intrin.h:30:0,
from /home/lrleon/GCC/include/c++/4.8.1/bits/opt_random.h:33,
from /home/lrleon/GCC/include/c++/4.8.1/random:51,
from /home/lrleon/GCC/include/c++/4.8.1/bits/stl_algo.h:65,
from /home/lrleon/GCC/include/c++/4.8.1/algorithm:62,
from test-temp.C:4:
/home/lrleon/GCC/lib/gcc/x86_64-unknown-linux-gnu/4.8.1/include/mmintrin.h: In function ‘__m64 _mm_cvtsi32_si64(int)’:
/home/lrleon/GCC/lib/gcc/x86_64-unknown-linux-gnu/4.8.1/include/mmintrin.h:61:54: error: can’t convert between vector values of different size
return (__m64) __builtin_ia32_vec_init_v2si (__i, 0);
^
…などなど。
実行しても同じことが起こります
g++ -std=c++11 -c -o test-temp.o test-temp.C
; 再び、バージョン 4.8.1
しかし、ヘッダー行を入れ替えると、
# include <algorithm>
# include <argp.h>
その後、すべて正常にコンパイルされます。
誰かが私に何が起こっているのかを理解するように教えてくれますか?