J'essaie d'obtenir llvm-gcc 4.2.2.9 pour compiler sur ce système x86_64 qui exécute le noyau générique 3.0.0-21. llvm 2.9 se construit bien. Je pensais que la version téléchargeable de llvm-gcc causait d'autres problèmes, alors j'ai décidé de construire moi-même llvm-gcc.Compilation de gcc 4.2 de LLVM 2.9 sur le noyau 3.0 avec gcc 4.6
Comme suggéré dans le README.LLVM
je Configuré avec
../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++
Je suis en ce à partir du répertoire /opt/llvm-gcc4.2-2.9
, tandis que les sources sont assis dans /opt/llvm-gcc-4.2-2.9.source
et mes LLVM 2.9 vit à /opt/llvm-2.9
. Notez que je définis le --host
au lieu du --target
car cela définit implicitement le --target
à la même architecture.
make
ne construit beaucoup de choses (la production d'une quantité non négligeable d'avertissements) quand enfin arrêter à cette erreur:
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
Je trouve un peu bizarre que stdio.h
de l'include_path passe de mon système à llvm-gcc
puis réessaie d'inclure les en-têtes système. Mais c'est peut-être normal? Après cette erreur, des centaines de lignes avec plus d'erreurs suivent à partir de la même unité de compilation.
Se pourrait-il que le gcc 4.6.1 de mon système ou les en-têtes de mon système deviennent peut-être incompatibles avec les en-têtes ivvm-gcc 4.2 datés? Là encore, je sais que sur un système différent (exécutant le noyau 2.6), gcc 4.5.2 joue bien avec le gcc 4.2 de llvm 2.7.
Je suis perdu ici, car j'ai besoin d'un récent llvm 2. *, et les deux autres versions llvm acceptables (2.7, 2.8) n'ont montré aucun résultat plus utile.
Peut-être une question stupide, mais avez-vous essayé LLVM-3.0 ou LLVM-3.1 avec clang? –
@honk: Je ne l'ai pas fait. Principalement pour la raison que je ne serais pas utile pour llvm> = 3.0. J'ai * besoin * llvm-gcc et llvm 2.9 (ou 8 ou 7). – bitmask