2012-06-16 1 views
1

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.

+0

Peut-être une question stupide, mais avez-vous essayé LLVM-3.0 ou LLVM-3.1 avec clang? –

+0

@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

Répondre

0

Il semble que/usr/include sur votre système fournisse des en-têtes 32 bits, la compilation échoue donc car tous les en-têtes multilib ne sont pas installés. Vous devrez peut-être patcher llvm-gcc de la même manière que vos correctifs de distribution gcc afin de trouver les emplacements des en-têtes. Vous pouvez également essayer d'installer des en-têtes 32 bits et essayer la construction multilib de llvm-gcc.

Mais la meilleure façon sera passer à LLVM 3.1 et clang :)

Questions connexes