1

3.0.0-21-generic カーネルを実行するこの x86_64 システムでllvm-gcc 4.2.2.9をコンパイルしようとしています。llvm 2.9 自体は正常にビルドされます。llvm-gcc のダウンロード可能なバージョンが他の問題を引き起こしているのではないかと疑ったので、自分で llvm-gcc をビルドすることにしました。

README.LLVMI構成で提案されているように

../llvm-gcc-4.2-2.9.source/configure \
  --prefix=/opt/llvm-gcc4.2-2.9/../llvm-gcc4.2-2.9-install \
  --disable-multilib \
  --program-prefix=llvm- \
  --enable-llvm=/opt/llvm-2.9 \
  --host=x86_64-generic-linux-gnu
  --enable-languages=c,c++

ソースが存在し、llvm 2.9/opt/llvm-gcc4.2-2.9が にある間、これをディレクトリから実行しています。これは暗黙的にを同じアーキテクチャに設定するため、 の代わりに を設定していることに注意してください。/opt/llvm-gcc-4.2-2.9.source/opt/llvm-2.9--host--target--target

make最終的にこのエラーで停止すると、多くのものを構築します(かなりの量の警告が生成されます):

make[3]: Entering directory `/opt/llvm-gcc4.2-2.9/gcc'
/opt/llvm-gcc4.2-2.9/./gcc/xgcc -B/opt/llvm-gcc4.2-2.9/./gcc/ -B/opt/llvm-gcc4.2-2.9/../llvm-gcc4.2-2.9-install/x86_64-generic-linux-gnu/bin/ -B/opt/llvm-gcc4.2-2.9/../llvm-gcc4.2-2.9-install/x86_64-generic-linux-gnu/lib/ -isystem /opt/llvm-gcc4.2-2.9/../llvm-gcc4.2-2.9-install/x86_64-generic-linux-gnu/include -isystem /opt/llvm-gcc4.2-2.9/../llvm-gcc4.2-2.9-install/x86_64-generic-linux-gnu/sys-include  -O2 -O2 -g -O2  -DIN_GCC    -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition  -isystem ./include  -I. -I. -I../../llvm-gcc-4.2-2.9.source/gcc -I../../llvm-gcc-4.2-2.9.source/gcc/. -I../../llvm-gcc-4.2-2.9.source/gcc/../include -I../../llvm-gcc-4.2-2.9.source/gcc/../libcpp/include  -I../../llvm-gcc-4.2-2.9.source/gcc/../libdecnumber -I../libdecnumber -I/opt/llvm-2.9/include  -g0 -finhibit-size-directive -fno-inline-functions -fno-exceptions -fno-zero-initialized-in-bss -fno-toplevel-reorder  -fno-omit-frame-pointer -fno-asynchronous-unwind-tables \
      -c ../../llvm-gcc-4.2-2.9.source/gcc/crtstuff.c -DCRT_BEGIN \
      -o crtbegin.o
In file included from /usr/include/stdio.h:28,
                 from ../../llvm-gcc-4.2-2.9.source/gcc/tsystem.h:90,
                 from ../../llvm-gcc-4.2-2.9.source/gcc/crtstuff.c:68:
/usr/include/features.h:323:26: error: bits/predefs.h: No such file or directory
/usr/include/features.h:356:25: error: sys/cdefs.h: No such file or directory
/usr/include/features.h:388:23: error: gnu/stubs.h: No such file or directory

インクルード パスが自分のシステムstdio.hからヘッダーに戻りllvm-gcc、システム ヘッダーを再度インクルードしようとするのは少し奇妙です。でもそれが普通なのかな。

そのエラーの後、同じコンパイル単位からさらにエラーのある数百行が続きます。

私のシステムの gcc 4.6.1 またはシステムのヘッダーが古い llvm-gcc 4.2 ヘッダーと互換性がなくなった可能性がありますか? 繰り返しになりますが、別のシステム (2.6 カーネルを実行) では、gcc 4.5.2 が llvm 2.7 の gcc 4.2 とうまく機能することがわかっています。

最近の llvm 2.* が必要であり、他の 2 つの許容可能な llvm バージョン (2.7、2.8) では、より役立つ結果が得られなかったため、ここで途方に暮れています。

4

1 に答える 1

0

お使いのシステムの /usr/include は 32 ビット ヘッダーを提供しているようです。したがって、すべての multilib ヘッダーがインストールされていないため、コンパイルは失敗します。ヘッダーの場所を見つけるために、ディストリビューションが gcc にパッチを当てるのと同じ方法で llvm-gcc にパッチを当てる必要がある場合があります。

または、32 ビット ヘッダーをインストールして、llvm-gcc の multilib ビルドを試すこともできます。

しかし、最善の方法はLLVM 3.1に切り替えてclangすることです:)

于 2012-06-17T16:41:02.020 に答える