Installation du compilateur et du compilateur C/C++ (installation c+)

Table des matières
1. Présentation des compilateurs pour les langages de programmation courants
2. Les différences entre GCC, MinGW, MinGW-w64, TDM-GCC, Cygwin, MSYS et MSYS2
3. Téléchargez et installez la suite de compilateurs MinGW-w64
4. Après l'installation MinGW-w64, Configuration de la variable d'environnement Windows (paramètre)
5. Le fonctionnement du compilateur et sa relation avec l'environnement de développement intégré, la source du compilateur

Installation du compilateur et du compilateur C/C++ ( installation c+)

1. Présentation des compilateurs pour les langages de programmation courants

       Le langage machine est l'expression du binaire dans l'ordinateur, et le binaire de 1 et 0 est représenté par des niveaux haut et bas. Le binaire de 1 et 0 constitue une instruction machine (instruction), également appelée code machine ou instruction informatique, et l'ordinateur s'exécute selon le code machine binaire.

        Une instruction machine (code machine) doit comprendre deux parties : un code opération et un code adresse (ou opérande). L'opcode indique le type d'opération effectuée par l'instruction, telle que : additionner, soustraire, multiplier, diviser, transférer, etc. Le code d'adresse indique l'emplacement où les données impliquées dans l'opération et le résultat de l'opération sont stockés. Les instructions de la machine seront ensuite traduites en opérations spécifiques dans le processeur, afin que l'ordinateur puisse effectuer des opérations spécifiques.

      C et C++ peuvent compiler le code en code machine via le compilateur (compilateur), et l'ordinateur peut l'exécuter en fonction du code machine, tandis que Java et Python compilent d'abord le code en bytecode, puis compilent le bytecode en code machine Et exécuter , le premier n'a besoin d'être compilé qu'une seule fois dans son ensemble, puis exécuté une fois la compilation terminée, et le second compile deux fois de manière relativement indépendante (la deuxième fois est la compilation et l'exécution). On peut voir qu'installer le langage C ou installer C++ n'est pas comme installer Java ou Python. Le premier n'a besoin d'installer qu'un compilateur pour exécuter le programme, tandis que le second a besoin d'installer un compilateur + une machine virtuelle. Par exemple : l'interpréteur python est composé d'un compilateur + composition d'un mécanisme de machine virtuelle. Par conséquent, il existe une grande différence entre l'installation du langage C ou l'installation C++ et l'installation Java ou Python, qui est principalement déterminée par les caractéristiques des deux processus de traitement.

       Mais au sens large, ce que Java ou Python installe est aussi une sorte de compilateur, mais ce genre de compilateur est assez particulier. Il a subi deux traductions relativement indépendantes, et la seconde implémentation est exécutée pendant la traduction. Grâce à cette fonctionnalité, le première La deuxième exécution de la traduction est appelée une machine virtuelle, et le compilateur C ou C++ n'a qu'une seule traduction au total. Une fois la traduction terminée, un fichier avec les caractéristiques du code machine est généré. Le fichier généré est étroitement lié au système informatique où il se trouve (a Les fichiers exécutés sur l'ordinateur sont étroitement liés au système d'exploitation et au système matériel de cet ordinateur, et ne peuvent être exécutés que s'ils s'y adaptent), par conséquent, C ou C++ manque de multiplateforme et de portabilité, tandis que Java ou Python est compilé pour la première fois. Le bytecode généré n'est pas lié au système informatique où il se trouve. C'est juste un peignage du code et n'est pas lié au système informatique. Il est étroitement lié à l'ordinateur système lors de l'exécution de la deuxième traduction.Par conséquent, Java ou Python en premier La forme de bytecode compilée une fois assure leur multiplateforme et leur portabilité, ce qui est également un avantage pour eux.

       L'installation de n'importe quel langage de programmation consiste en fait principalement à installer un fichier qui a des capacités de traduction pour ce langage de code.Cette fonction de traduction consiste à convertir le code en code machine final, puis le CPU l'exécute en fonction du code machine . D'autres installations supplémentaires sont plus pratiques pour les utilisateurs. Ces fonctions supplémentaires peuvent être complètement supprimées. Nous pouvons également réaliser ces fonctions supplémentaires avec uniquement la fonction de traduction, mais cela mettra nos capacités à l'épreuve et prendra plus de temps de développement. Par conséquent, l'installation de certains langages de programmation occupent beaucoup d'espace de stockage, mais rajoutent en réalité pas mal de fonctions supplémentaires, comme par exemple : matlab, qui fournit un grand nombre d'outils de calcul, car ce langage se concentre sur les calculs mathématiques.

      Tant que le code que nous écrivons est conforme à la spécification c ou c++, le compilateur peut traduire ces codes en codes machine (instructions machine) que l'ordinateur peut exécuter directement, puis le CPU les exécute selon ces instructions pour réaliser le fonctionnement de le programme. Ci-dessous, nous comprenons d'abord plusieurs logiciels pouvant prendre en charge GCC sur la plate-forme Windows, puis introduisons l'installation du compilateur C/C++.

2. Différences entre GCC , MinGW , MinGW-w64 , TDM-GCC , Cygwin , MSYS , MSYS2

      GCC (GNU Compiler Collection), la suite de compilateurs GNU. GCC s'appelait à l'origine GNU C Compiler (GNU C Compiler), qui ne peut traiter que le langage C. Après expansion, il peut prendre en charge plusieurs langages de programmation tels que C, C++, Objective-C, Objective-C++, Fortran, Ada, Modula -2 et Go. Il a donc été renommé GNU Compiler Collection (GNU Compiler Collection). GCC ne prend pas entièrement en charge la compilation de Java et Python, mais l'implémentation C sous-jacente de Java et Python utilisera un compilateur C.

      L'intention initiale de GCC était d'écrire un compilateur spécialement pour le système d'exploitation GNU, et il a été adopté comme compilateur standard par la plupart des systèmes d'exploitation de type Unix (tels que : Linux, BSD, MacOS X, etc.).

       Le support de GCC sur la plate-forme Windows n'est pas parfait, et il y a un manque de compatibilité.Il y a beaucoup de problèmes dans le développement d'applications sous Windows avec GCC. Les logiciels de compilation suivants ont leurs propres caractéristiques, contiennent GCC et conviennent à la plate-forme Windows.

(1) MinGW , MinGW-w64 , TDM-GCC

       MinGW, MinGW-w64 et TDM-GCC sont des suites de compilateurs (paquets d'intégration de compilateur) basés sur GCC et adaptés aux systèmes d'exploitation Windows.

       MinGW a porté GCC sur Windows, mais ne prend en charge que les applications 32 bits. MinGW-w64 est dérivé de MinGW, qui peut non seulement prendre en charge les applications 32 bits, mais également prendre en charge les applications 64 bits. TDM-GCC est une suite de compilateurs fournie et maintenue par une organisation non officielle qui prend en charge les applications 32 bits et 64 bits.

(2) Cygwin , MSYS , MSYS2

       Cygwin, MSYS et MSYS2 représentent tous des environnements pouvant s'exécuter sous Windows. Ce ne sont pas de pures suites de compilateurs. Ils prennent tous en charge Windows. Par conséquent, leur GCC intégré peut également être utilisé sur la plate-forme Windows.

       Cygwin est un environnement de simulation UNIX (environnement virtuel) qui peut s'exécuter sous Windows. Il fournit une DLL de simulation UNIX et une variété de progiciels (y compris GCC) qui peuvent être trouvés dans les systèmes Linux construits dessus, ce qui permet à GCC d'être utilisé sur Plate-forme Windows.

       MSYS (Minimal GNU (POSIX) system on Windows) est un petit environnement GNU qui peut fonctionner sous Windows. GNU est conçu comme Unix, mais il ne contient pas de code Unix protégé par copyright. POSIX signifie Portable Operating System Interface of UNIX (en abrégé POSIX). Une interface peut être comprise comme une convention pour la connexion de différents composants.

       MSYS2 est une version réécrite indépendante de MSYS, et c'est aussi un logiciel Windows basé sur Cygwin (POSIX) et MinGW-w64 .

       Par conséquent, MSYS et MSYS2 permettent également à GCC d'être utilisé sur la plate-forme Windows.

3. Téléchargez et installez la suite de compilateurs MinGW-w64

       Ce qui précède présente plusieurs logiciels pouvant prendre en charge GCC sur la plate-forme Windows. Nous pouvons télécharger le logiciel de compilation correspondant en fonction de nos propres besoins. Le tableau 3-1 ci-dessous fournit les adresses de téléchargement des logiciels de compilation couramment utilisés pouvant fonctionner sur la plate-forme Windows.

Tableau 3-1 Logiciels couramment utilisés prenant en charge GCC sur la plate-forme Windows

Adresse du site officiel du CCG

http://gcc.gnu.org/

Adresse du site officiel de MinGW-w64

https://www.mingw-w64.org/

Adresse du site officiel de TDM-GCC

https://jmeubank.github.io/tdm-gcc/

Adresse du site officiel de Cygwin

https://www.cygwin.com/

Adresse du site officiel de MSYS2

https://www.msys2.org/

       MinGW-w64 est open source et maintenu par une communauté open source active. Ici, nous choisissons d'installer la suite de compilateurs MinGW-w64. Ouvrez l'adresse du site Web officiel MinGW-w64 dans le tableau 3-1, comme illustré à la figure 3-1.

Figure 3-1 Adresse du site Web officiel de MinGW-w64

     Cliquez sur la position de la flèche rouge dans la figure 3-1, puis cliquez sur l'option Téléchargements dans le menu contextuel pour accéder à la page de téléchargement (c'est-à-dire https://www.mingw-w64.org/downloads ), le titre de chaînes d'outils et de packages prédéfinis sur cette page Les éléments suivants sont des chaînes d'outils et des packages logiciels prédéfinis, c'est-à-dire des packages intégrés contenant des outils spécifiques pour GCC / Mingw-w64, et nous n'avons qu'à télécharger MinGW-w64, et vous pouvez déroulez la page jusqu'à l'emplacement Sources dans la zone rouge de la Figure 3-2 .

 Figure 3-2 Lien de téléchargement MinGW-w64

    Cliquez sur le lien interne SourceForge pointé par la flèche rouge dans la figure 3-2 pour accéder à la page de téléchargement de MinGW-w64 (c'est-à-dire https://sourceforge.net/projects/mingw-w64/files/mingw-w64/mingw-w64 -release/ ) , comme illustré à la Figure 3-3.

Figure 3-3 Page de téléchargement MinGW-w64

       Figure 3-3 La boîte rouge est le téléchargement du code source (code source) de MinGW-w64 à différents moments et types, et la flèche rouge est le code source (code source) du MinGW-w64 récemment mis à jour. Ces codes sources sont pas d'installateurs, il n'y a donc pas de dossier bin (le dossier bin contient des fichiers exécutables après l'installation, nous devons utiliser ce dossier lors de la configuration des variables d'environnement).

       Nous devons utiliser le fichier exécutable de MinGW-w64 pour générer la fonction de compilation, nous devons donc télécharger le programme d'installation de MinGW-w64, après l'installation, nous pouvons obtenir le fichier exécutable et dérouler la page à l'emplacement indiqué sur la figure 3-4. Notez que le fichier exécutable mentionné ici fait référence à un fichier qui a été compilé et traité (également appelé fichier de code machine ou fichier binaire composé de code machine), et le code source mentionné ci-dessus n'a pas été compilé.

Figure 3-4 Programme d'installation de MinGW-w64

       Dans la figure 3-4, ① et ② sont la dernière version de MinGW-w64. La première case rouge consiste à installer MinGW-w64 en ligne. Si l'accès au réseau externe est lent, vous pouvez choisir de télécharger le package compressé dans le deuxième case rouge. Ce package compressé est le fichier exécutable généré par MinGW-w64, qui peut être utilisé après décompression. Bien sûr, quelle que soit la méthode utilisée, le fichier exécutable de MinGW-w64 doit être configuré avec des variables d'environnement avant il peut fonctionner sous Windows.

       Ici, nous choisissons de télécharger le package compressé dans la deuxième case rouge. Avant de télécharger le package compressé, nous devons comprendre la signification des paramètres dans le nom du package compressé dans la case rouge ② de la figure 3-4. Le tableau 3-2 ci-dessous répertorie les significations des paramètres.

Tableau 3-2 Types de version MinGW-w64

Type de paramètre

paramètre

illustrer

Architecture du processeur

x86_64

64 bits

i686

32 bits

Protocole d'interface du système d'exploitation

win32

Développer des applications Windows

posix

Développer des applications pour Linux , Mac

modèle de gestion des exceptions

sjlj

Version basse, peut prendre en charge 32 bits et 64 bits

seh

Nouvelle version, meilleures performances, ne prend en charge que 64 bits

nain

Nouvelle version, meilleures performances, ne prend en charge que 32 bits

      Selon le tableau 3-2, nous pouvons télécharger la version x86_64-win33-seh. Après décompression, ce sera le fichier exécutable qui a été installé et généré, ce qui équivaut à la première case rouge (MinGW-W64-install.exe ) dans la Figure 3-4. Résultat de l'installation en ligne après le téléchargement.

       De plus, les paramètres du tableau 3-2 ci-dessus sont en fait les paramètres d'option d'installation lors de l'installation en ligne après le téléchargement de la première boîte rouge (MinGW-W64-install.exe) de la figure 3-4, et la première boîte rouge (MinGW -W64-install.exe) ne seront pas répertoriés ici. Pour le processus d'installation après le téléchargement de la boîte, sa configuration d'option peut se référer à la signification des paramètres du Tableau 3-2.

4. Après l'installation de MinGW-w64, configuration de la variable d'environnement Windows ( paramètre)

       Si nous téléchargeons le programme d'installation (c'est-à-dire la première case rouge de la figure 3-4) à installer, nous devons également définir la variable d'environnement (variable d'environnement), mais de nombreux programmes d'installation vous inviteront à définir la variable d'environnement lors de l'installation.

       Une variable d'environnement est un objet avec un nom spécifique dans le système d'exploitation, qui contient des informations qu'une ou plusieurs applications utiliseront. Lorsque le système doit exécuter un programme sans lui indiquer le chemin complet où se trouve le programme, le système recherchera non seulement le programme dans le répertoire courant, mais ira également au chemin spécifié dans path pour trouver des variables exécutables .

       Ci-dessus, nous avons téléchargé le fichier compressé et décompressé directement l'installation de MinGW-w64. Nous ne pouvons pas utiliser directement le logiciel de compilation MinGW-w64. Nous devons configurer la variable d'environnement (variable d'environnement), et nous devons définir le fichier exécutable après le installation de MinGW-w64 en tant que variable d'environnement système, c'est-à-dire définir le dossier bin installé comme valeur de la variable d'environnement.

        Ci-dessous, nous introduisons la configuration des variables d'environnement. L'icône d'ordinateur du bouton droit de la souris est illustrée à la Figure 4-1.

Figure 4-1 Propriétés de l'ordinateur

         Cliquez sur Propriétés dans le menu de la Figure 4-1 pour accéder à l'interface de configuration de l'ordinateur de la Figure 4-2.

Figure 4-2 Paramètres de l'ordinateur

        Cliquez sur le paramètre système avancé au niveau de la flèche rouge de la Figure 4-2 pour accéder à l'interface de configuration du système de la Figure 4-3.

Figure 4-3 Propriétés système

        Cliquez sur la variable d'environnement au niveau de la flèche rouge de la Figure 4-3 pour accéder à l'interface de la variable d'environnement de la Figure 4-4.

Figure 4-4 Variables d'environnement

       Sélectionnez la variable Path parmi les variables système dans la case rouge de la Figure 4-4, puis cliquez sur Edit au niveau de la flèche rouge, ou double-cliquez sur la variable Path pour accéder à l'interface de modification des variables d'environnement de la Figure 4-5.

Figure 4-5 Modification des variables d'environnement

         Cliquez sur Nouveau au niveau de la flèche rouge de la Figure 4-5 pour accéder à l'interface de variable d'environnement illustrée à la Figure 4-6.

Figure 4-6 Créer une nouvelle variable d'environnement

       Entrez le chemin d'installation de MinGW-W64 comme indiqué dans la Figure 4-6.Le chemin doit contenir le répertoire bin, c'est-à-dire généralement ...\mingw64\bin.

         Le répertoire bin contient des fichiers exécutables tels que cpp.exe, gcc.exe, g++.exe, gdb.exe, parmi lesquels cpp.exe est le préprocesseur, g++/gcc.exe est le compilateur, gdb.exe est le débogueur, ainsi que .exe est l'assembleur et ld.exe est l'éditeur de liens.

       Une fois la saisie de la nouvelle variable d'environnement terminée, cliquez sur OK. Une fois toutes les confirmations terminées, la configuration de la variable d'environnement est réussie. Lors de l'appel, lorsque le chemin n'est pas spécifié, le système entrera automatiquement l'appel correspondant à l'emplacement configuré.

       Une fois la configuration ci-dessus terminée, nous utilisons la touche de raccourci win + r (c'est-à-dire Windows + R) pour ouvrir la fenêtre en cours d'exécution, entrez cmd et confirmez, ouvrez la fenêtre de commande cmd, entrez gcc -v dans la fenêtre de commande et afficher les informations de version de gcc, afin de déterminer si gcc est installé et si la configuration de la variable d'environnement a réussi. v peut être compris comme l'abréviation de version. Comme le montre la figure 4-7, l'installation et la configuration ont réussi.

Figure 4-7 Informations sur la version de gcc

       À ce stade, l'installation de MinGW-W64 est terminée, c'est-à-dire que la configuration de la variable d'environnement est terminée et que le compilateur peut être utilisé pour le développement de programmes C/C++ sous Windows.

5. Le fonctionnement du compilateur et sa relation avec l'environnement de développement intégré, et la source du compilateur

(1) Le fonctionnement du compilateur et sa relation avec l'environnement de développement intégré

       Le compilateur est composé de fichiers, et nous avons également besoin d'outils pour exécuter ces fichiers exécutables, c'est-à-dire appeler le compilateur pour compiler, pour réaliser la fonction de développement du programme. cmd est un outil d'opération en ligne de commande du système Windows. Les utilisateurs peuvent effectuer diverses opérations système ou programme en saisissant des commandes.

        Pour tout langage de programmation, tant que le compilateur de ce langage de programmation est installé, nous pouvons utiliser un éditeur de texte (fichier txt) pour écrire le code, puis l'enregistrer au format du langage de programmation (c'est-à-dire changer le format . suffixe txt au suffixe du langage de programmation ), vous pouvez appeler le compilateur de ce langage de programmation via la fenêtre d'invite de commande cmd pour exécuter le fichier de code écrit. La suite de compilateurs MinGW-W64 que nous avons installée ci-dessus convient à la plate-forme Windows. Nous pouvons utiliser l' invite de commande Windows cmd.exe pour exécuter le compilateur pour le développement de programmes C/C++.

       cmd pour exécuter le code de programme C/C++ se référer à Windows cmd pour exécuter le compilateur (cmd pour exécuter C/C++) .

       Dans Windows, en plus de la méthode d' invocation du compilateur par la commande CMD ci-dessus , nous pouvons également utiliser l'outil d'environnement de développement intégré (Integrated Development Environment, IDE en abrégé) pour exécuter le compilateur pour le développement de code de programme.

       Les outils d'environnement de développement intégré sont un ensemble d'outils qui peuvent nous aider à améliorer l'efficacité du développement du langage (tels que : l'édition de code, le débogage, la coloration syntaxique, intellisense, etc.), ce qui peut améliorer l'efficacité du développement et de la gestion des projets. Après avoir configuré le compilateur (c'est-à-dire appeler le compilateur) dans l'outil d'environnement de développement intégré, le développement de code de programme basé sur le compilateur peut être réalisé. Le compilateur fournit la fonction de traduction du langage de programmation et l'outil d'environnement de développement intégré uniquement fournit la fonction de développement du programme.La fonction auxiliaire de commodité, pour parler simplement, l'environnement de développement intégré est un outil auxiliaire pour notre programmation, ce qui nous convient pour écrire du code, mais c'est le compilateur qui réalise réellement le fonctionnement du programme, et l'environnement de développement intégré appellera le compilateur pour exécuter le programme.

       Les langages de programmation (C/C++, Java, Python, Matlab, etc.) sont généralement développés à l'aide d'un environnement de développement intégré (IDE), ce qui peut améliorer l'efficacité de l'écriture de code.Certains langages de programmation ont leur propre Les IDE, par exemple : python a le sien L'outil IDLE est fourni avec lui, mais c'est un IDE simple, et son fonctionnement a des limites. Par conséquent, d'autres IDE (tels que : pycharm) sont généralement utilisés pour écrire du code. L'interface démarrée par matlab.exe est un IDE intégré (par défaut, la compilation de matlab est appelée périphérique), cet IDE a des fonctions plus complètes, donc l'utilisation du langage matab utilise généralement son propre IDE.

       Bien que l'éditeur de code VS Code se positionne comme un éditeur, il possède en réalité les fonctions de base d'un outil d'environnement de développement intégré.Parce qu'il est gratuit, il est très apprécié des utilisateurs et peut être utilisé en C/C++, Java, Python et autres développement de programme. Nous pouvons également utiliser les outils VS Code pour le développement C/C++, voir le dernier tutoriel détaillé d'installation de VS Code .

(2) La source du compilateur

       Nous avons mentionné ci-dessus le code source (code source), c'est-à-dire le code que nous avons écrit conformément à la spécification du langage, et c'est aussi du code non compilé, qui ne peut être exécuté qu'après avoir été traduit en code machine par un compilateur. Donc, après la naissance d'un langage de programmation, il n'a pas de compilateur, comment fonctionne-t-il ? Au début, il a été exécuté avec l'aide d'autres compilateurs, puis un fichier de code source du compilateur a été écrit selon ce langage, et les fichiers de code source du compilateur écrits dans ce langage ont été compilés en fichiers exécutables par des compilateurs dans d'autres langages. amélioration, il est enfin né.Le compilateur exécutable de ce langage (fichier exécutable, c'est-à-dire un fichier composé de code machine, que l'ordinateur peut exécuter selon le code machine).

       Lorsque l'ordinateur est né, les fonctions initiales de l'ordinateur étaient très simples.Par conséquent, le compilateur initial était utilisé par les humains pour traduire les phrases écrites par les humains en langage machine pour que la machine les exécute. Cependant, avec l'amélioration des fonctions informatiques, le nombre d'instructions machine ne cesse d'augmenter. Il est facile de faire des erreurs, et le travail est lourd, et il est difficile pour les humains de faire le travail de traduction. Surtout lorsqu'il existe une programmation standard. spécification du langage, il est encore plus nécessaire pour une personne qui peut traduire le langage de programmation.L'opération automatique de traduction du langage en code machine.

       En réponse à cette situation, parallèlement au développement du langage d'assemblage à partir du langage machine, les informaticiens ont commencé à utiliser le code machine pour implémenter un compilateur afin de compiler (traduire) le code source du langage d'assemblage en code machine pour l'exécution de la machine. De cette façon, le code assembleur peut s'exécuter sur la machine, puis vous pouvez écrire un fichier de code source du compilateur sur vous-même en langage assembleur, et laisser le compilateur implémenté par le code machine compiler le fichier de code source du compilateur écrit en langage assembleur dans un exécutable fichier, puis grâce à une amélioration continue, le fichier de compilateur exécutable de ce langage d'assemblage voit enfin le jour, qui réalise également le compilateur du langage lui-même dans un langage de programmation, que l'on appelle aussi ce langage de programmation.

       De la même manière, lorsque d'autres langages naissent, un compilateur exécutable pour ce langage peut être généré à l'aide d'un compilateur de langage d'assemblage. Par exemple: langage d'assemblage → langage B → langage C, le langage c peut être amorcé via le compilateur de langage d'assemblage pour générer le compilateur de langage c lui-même, puis le code de langage c peut être compilé avec son propre compilateur c et traduit en Le code machine que le cpu peut exécuter, de manière à réaliser le fonctionnement du code en langage c.

       Le langage C est relativement proche de la couche inférieure de la machine et convient mieux à la lecture humaine.Parce qu'il est proche de la couche inférieure de la machine, il présente des avantages en termes de fonctionnement matériel et de vitesse de fonctionnement rapide.Par conséquent, le langage C est naturellement affirmé par les utilisateurs, et le compilateur C est également utilisé par d'autres langages Compilateurs comparables.

       Par conséquent, le compilateur est développé étape par étape par des personnes, du code machine, de l'assemblage, du c, etc. Les langages de programmation nés s'appuient sur les compilateurs des langages qui sont nés pour réaliser le bootstrapping (Bootstrapping) et générer leurs propres compilateurs.

Le dernier tutoriel détaillé d'installation de VS Code :

https://blog.csdn.net/thefg/article/details/131752996

Windows cmd exécute le compilateur (cmd exécute C/C++) :

https://blog.csdn.net/thefg/article/details/132017498

Enfin, vous êtes invités à aimer, mettre en signet et suivre!

Je suppose que tu aimes

Origine blog.csdn.net/thefg/article/details/131916203
conseillé
Classement