6
votes

Compilation du noyau Linux avec non-GCC

Le noyau Linux est écrit pour la compilation de GCC et utilise beaucoup de packs de GCC petites et laids. Quels compilateurs peuvent compiler le noyau Linux sauf GCC?

Celui qui peut, est le compilateur Intel. Quelle version minimale de celle-ci est nécessaire pour la compilation du noyau?

Il y avait également un compilateur de Tiny C, mais il a été capable de compiler uniquement une version réduite et spécialement modifiée du noyau.

Y a-t-il d'autres compilateurs capables de construire du noyau?


4 commentaires

Dupliquer: Stackoverflow.com/Questtions/689327/...


Ma première question serait ... "Pourquoi GCC n'est-il pas une option?" Je ne dis pas que vous ne devriez pas essayer de faire ce que vous faites, c'est bien sûr de voir la curiosité étant livrée. Mais vous plongez dans une piscine de requins armés de lasers, la plupart d'entre nous voudront peut-être savoir pourquoi.


@Tim Post, je veux apprendre, quels problèmes sont présents dans la compilation du noyau Linux avec des compilateurs non-GCC. Je travaille avec un compilateur expérimental et je dois améliorer son soutien des extensions GNU, nécessaires pour compiler le noyau Linux. Les correctifs d'Intel (Linuxdna) sont très intéressants pour moi.


La popularité du confort de la créature GCC, peu importe la quantité de linus sur les développeurs de GCC, est le principal problème pour vous. J'ai aussi eu la réponse de votre commentaire. Regardez des choses simples comme ABS () et le fait que le noyau a mis en place sa propre version tout en s'échappant d'être mordu par des bugs évidents qui ont pris des années à venir à la lumière populaire. Linux n'est pas amoureux de GCC, ni l'inverse. Ils arrivent juste à travailler bien ensemble. Bonne chance à ce sujet :)


3 Réponses :


0
votes

En bref, vous ne pouvez pas, car le code du noyau a été écrit pour tirer parti de la sémantique du compilateur de la GCC ... et entre le noyau et le code compilé, la relation est très forte, c'est-à-dire dû être compilée avec GCC. ..Since GCC utilise des fichiers d'objet 'elf' (format de liaison incorporé), le noyau doit être construit à l'aide du format de code d'objet. À moins que vous ne puissiez pirater de travailler avec un autre compilateur - il peut bien compiler, mais peut ne pas fonctionner, car les compilateurs sous Windows produisent du code PE, il pourrait y avoir des résultats inattendus, ce qui signifie que le noyau peut ne pas démarrer du tout!


5 commentaires

Les compilateurs sont nombreux et compilateurs à part Windows PE. Il existe des compilateurs ELF dans de nombreux UNIXES, il existe également de nombreux compilateurs commerciaux pour Linux (surtout pour les plates-formes embarquées). De nombreux compilateurs travaillent avec Elf, et certains d'entre eux soutiennent une partie des extensions de GCC.


J'ai nommé 2 compilateurs, qui a réellement été capable de compiler le noyau à un moment donné du passé - Intel CC et Tiny CC. Je veux entendre ici l'état actuel du noyau Linux compilant le support. Par exemple. Le "Sun Pro Compiler" peut-il construire le noyau?


Il existe de nombreux compilateurs pouvant produire un code d'objet ELF; Ceci est juste incorrect. Ce n'est pas pourquoi GCC est requis.


@ERIC: Assez juste - votre commentaire est dûment noté, le point crucial est que Linux a été construit à l'aide de lachaise de GNU à partir du 1 jour depuis ...


Tommy, une branche de Linux 2.6 de presque entière peut être construite maintenant avec Intel CC. Pour les noyaux actuels, le patch pour ce bâtiment est inférieur à 100 lignes. En outre, LLVM essaie de construire du noyau et de la patch pour elle est plutôt petite. GCC n'est pas le meilleur compilateur, même ce n'est pas un bon compilateur (parfois).



3
votes

Informations sur le repose-papier: Vous devez corriger le noyau afin de compiler à l'aide de l'Intel CC Téléchargez le patch de noyau Linux pour Intel® Compiler

Voir aussi est-il possible Compiler le noyau Linux avec autre chose que GCC pour d'autres liens et informations

sur les sources les plus récentes: http://forums.fedoraforum.org/ showthread.php? p = 1328718


3 commentaires

La question 689327 est un peu dépassée (près d'un an). Y a-t-il des nouvelles informations ou même une liste de comipleurs non-GCC pour le noyau?


Et je veux connaître n'importe quel compilateur autre que GCC, ICC, Tinycc, capable de bâtir du noyau.


LLVM avec Clang est capable de construire un noyau Linux depuis cette saison



2
votes

Un processus continu consiste à engager des correctifs LLVMLinux dans le noyau de la vanille (2013-2014).

Le LLVMLinux est le projet de la Fondation Linux: http://llvm.linuxfoundation.org/ pour activer Le noyau de la vanille doit être construit avec LLVM. Beaucoup de correctifs sont préparés par Behan Web Webster, qui est le plomb de projet LLVMLinux.

Il y a l'article LWN sur le projet à partir de mai 2013 https://lwn.net/articles/549203/ "LFCS: le projet LLVMLinux"

Statut actuel du projet LLVMLinux est suivi à la page http://llvm.linuxfoundation.org /index.php/bugs#linux_kernel_issues

choses (essentiellement GCC-ISMS) déjà éliminées du noyau: * Variables de registres d'exercice (non-C99) * VLAIS (Fonction de GCC non documentée non documentée non C99 "Tableaux de longueur variable dans les structures"), comme struct s {int graph [N];} ou même struct s {int {int (N]; int array_usb_gadget [m]; } où n et m sont des arguments de fonction non constante * Fonctions imbriquées (caractéristique ADA portée dans C par les développeurs GCC / GNAT; non autorisé en C99) * Une magie de GCC / gaz comme des segments spéciaux, ou macro

choses à faire: * Utilisation de __ intégré_constant_p intégré pour implémenter une magie effrayante comme build_bug_on (! __ intégré_constant_p (offset));

Les bonnes nouvelles sur LLVMLinux sont qu'après que son noyau de patchs ne devienne pas seulement construisable avec LLVM + Clang, mais également plus facile à construire par d'autres compilateurs non-CCC, car le projet ne tue pas beaucoup de code C99 comme VLAIS, créé par USB Gadget Auteur, par NetFilter Hackers, et par des pirates sur le sous-système de crypto; Les fonctions non imbriquées également sont tuées.


0 commentaires