URL: https://linuxfr.org/forums/programmation-c/posts/compilateur-streame Title: Compilateur "streamé" Authors: Gui13 Date: 2013年03月24日T20:43:57+01:00 License: CC By-SA Tags: Score: 2 Salut à tous, Je suis entrain de compiler Qt5 en -j5, et je bulle en attendant. Donc voici: Aujourd'hui, le processus de compilation, c'est ça: - je tape `gcc moncode.c -c -o moncode.o` - le shell lance /usr/bin/gcc dans un nouveau processus et lui passe les options - LDD entre en action, reloge les libs dont GCC a besoin (stdlib, ld, environ 500ko) - le main est enfin lancé, et parse les arguments - gcc va "automatiquement" lancer l'assembleur (ar) et l'éditeur de lien (ld), dans des sous-processus Pour un petit projet, 4 ou 5 fichiers, c'est simple, mais je me dis que quand on commence à tourner autour des 3 ou 4000 fichiers source, le coût de lancement de 9 à 12000 processus gcc/ar/ld devient non négligeable. Du coup l'idée d'un compilateur "streamé", dans le sens où c'est un démon qui tourner, et à qui on passe les paramètres du boulot qu'on veut lui faire faire par un moyen quelconque. Genre: ./gcc-daemon & echo "/home/toto/moncode.c -c -o /home/toto/moncode.o"> /tmp/gcc-daemon-pipe # lit moncode.c et écrit le fichier objet dans moncode.o # on récupère le log des erreurs éventuelles dans un pipe aussi Du coup, il n'y a plus de coût de lancement de processus, et on peut imaginer de faire tourner `ar` et `ld` dans ce mode là. Et si le "pipe" dans lequel on balance les instructions est un peu intelligent, il peut spawner des sous-gcc qui vont recevoir leurs ordres depuis le gcc maitre, pour faire de la compile parallélisée. Qu'en pensez-vous? Est-ce que ça existe déjà? Est-ce que y a des grosses failles qui font que c'est de la grosse merde?