Cemprendre la phase du compilation??
Joker_
Messages postés
190
Statut
Membre
-
Nabla's Messages postés 20731 Statut Contributeur -
Nabla's Messages postés 20731 Statut Contributeur -
Bonjour,
J'ai une choses très compliquèe pour moi, je veux le comprend :
Alors, si j'ai un logiciel .exe que je veux utilisé sous windows xp par exemple : CCleaner
Lors de construction du logiciel, et pour générer le .exe, (1)le développeur a compilé son projet, le processeur se son machine est Intel
(2)Je sais que le compilateur dépend du processeur uilisé (Assembleur) alors il va traduire en une suite d'instruction intelligible par le processeur Intel
Pour moi, j'ai une machine avec un processeur Motorolla qui très différent de Intel.
(3) Le fichier .exe fonctionne normalement chez moi!!!!!
C'est claire que (1)+(2)+(3) donnent une contradiction!!!
Povez vous m'expliquer??
Merci d'avance
J'ai une choses très compliquèe pour moi, je veux le comprend :
Alors, si j'ai un logiciel .exe que je veux utilisé sous windows xp par exemple : CCleaner
Lors de construction du logiciel, et pour générer le .exe, (1)le développeur a compilé son projet, le processeur se son machine est Intel
(2)Je sais que le compilateur dépend du processeur uilisé (Assembleur) alors il va traduire en une suite d'instruction intelligible par le processeur Intel
Pour moi, j'ai une machine avec un processeur Motorolla qui très différent de Intel.
(3) Le fichier .exe fonctionne normalement chez moi!!!!!
C'est claire que (1)+(2)+(3) donnent une contradiction!!!
Povez vous m'expliquer??
Merci d'avance
A voir également:
- Cemprendre la phase du compilation??
- Breach compilation c'est quoi - Guide
- Taille haut parleur clio 2 phase 2 - Forum Autoradio
- Schéma branchement coupleur de phase ✓ - Forum CPL
- L'installation a échoué dans la phase first boot sysprep_specialize ✓ - Forum Windows 10
- Erreur de compilation projet ou bibliothèque introuvable ✓ - Forum Excel
12 réponses
en fait, plus que pour un processeur, la compilation est faite pour un jeu d'instructions. Dans nos PC, on utilise le jeu d'isntruction x86 et x86_64. ce jeu a été créé par intel. Il se peut que ton processeur motorola utilise aussi ce jeu d'instruction. Par exemple, els processeurs AMD et VIA utilisent aussi le jeu x86.
Ton ordinateur utilise windows XP. Windows XP n'existe que pour les jeux d'instruction x86 32 et 64 bits, donc ton processeur doit forcement utiliser ce jeu. Quel est la référence de ce processeur ?
Ton ordinateur utilise windows XP. Windows XP n'existe que pour les jeux d'instruction x86 32 et 64 bits, donc ton processeur doit forcement utiliser ce jeu. Quel est la référence de ce processeur ?
Nabla's!! J'ai parlé d'un exemple qui peut bien exister c'est pas une cas qui se passe avec moi!
Est ce que mon question est claire?
Est ce que mon question est claire?
Salut
La question n'est pas claire, mais la réponse l'est ;)
En général, on compile pour le système cible à partir du système hôte.
Il faut tenir compte à la fois du jeu d'instruction ET de l'OS cible.
Lorsque quelque chose diffère entre la cible et l'hote, on fait alors une CROSS-COMPILATION
La question n'est pas claire, mais la réponse l'est ;)
En général, on compile pour le système cible à partir du système hôte.
Il faut tenir compte à la fois du jeu d'instruction ET de l'OS cible.
Lorsque quelque chose diffère entre la cible et l'hote, on fait alors une CROSS-COMPILATION
il existe des emulateurs, qui convertisse les isntructiosn en temps réel, affin qu'elles soient comprise par la machine hote.
Lors de la créationde ton exe, il y a la compilation, mais aussi le link, et cette étape dépend du systeme d'exploitatation. Ainsi, ton exe compilé pour windows ne tournera pas sous linux, mais a priori la compilation aura été la meme (si je ne me trompe pas)
Lors de la créationde ton exe, il y a la compilation, mais aussi le link, et cette étape dépend du systeme d'exploitatation. Ainsi, ton exe compilé pour windows ne tournera pas sous linux, mais a priori la compilation aura été la meme (si je ne me trompe pas)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
@Nabla:
Le linker se charge uniquement de rassembler les .h et .c (dans le cas du C) nécéssaires qui auront été au préalablement compilés en fichier objets par l'assemblage (.o)
Le linker se charge uniquement de rassembler les .h et .c (dans le cas du C) nécéssaires qui auront été au préalablement compilés en fichier objets par l'assemblage (.o)
Non, c'est au moment du préprocessing si ça a été bien fait. Tu dois avoir une partie du genre:
#ifdef (x86) ....
#else ifdef (unix) ....
#endif
en entête de certains .h.
Après ça reste compliqué pour moi de comprendre aussi .
Mais il faut savoir que ça existe.En gros le programme détecte l'hote avant la compil.
#ifdef (x86) ....
#else ifdef (unix) ....
#endif
en entête de certains .h.
Après ça reste compliqué pour moi de comprendre aussi .
Mais il faut savoir que ça existe.En gros le programme détecte l'hote avant la compil.
c'est pas que j'aime avoir raison, mais:
https://forums.commentcamarche.net/forum/affich-37604426-la-compilation-et-les-modules-en-c-et-en-c
donc c'est bien au moment du link que le choix réel de l'OS se fait
https://forums.commentcamarche.net/forum/affich-37604426-la-compilation-et-les-modules-en-c-et-en-c
donc c'est bien au moment du link que le choix réel de l'OS se fait
certes, tu vas pas te taper l'initialisation de la pile unix si t'es sous windows. Cependant, le moment ou tu te connectes à la librairie est fait lors du link:
Je cite:
3) Le linkage
Enfin, le compilateur agrège chaque fichier .o avec les éventuels fichiers binaires des librairies qui sont utilisées (fichiers .a et .so sous linux, fichiers .dll et .lib sous windows).
Je suis informaticien, je ne connais pas tout, mais je sais que l'étape la plus importante dans la decision du systeme de destination est faite lors du link... car c'est la que tu lies les librairies...
si tu fais une sortie ecran, ton code ne changera pas que tu sois sous linux ou windows, par contre, la librairie que tu utilisera sera isntanciée lors du link, et c'est à ce titre que ej persiste et signe.
Il faudrait faire un test sous windows et linux: faire un hello world, le compiler sous linux et windows, et comparrer les .o
Je cite:
3) Le linkage
Enfin, le compilateur agrège chaque fichier .o avec les éventuels fichiers binaires des librairies qui sont utilisées (fichiers .a et .so sous linux, fichiers .dll et .lib sous windows).
Je suis informaticien, je ne connais pas tout, mais je sais que l'étape la plus importante dans la decision du systeme de destination est faite lors du link... car c'est la que tu lies les librairies...
si tu fais une sortie ecran, ton code ne changera pas que tu sois sous linux ou windows, par contre, la librairie que tu utilisera sera isntanciée lors du link, et c'est à ce titre que ej persiste et signe.
Il faudrait faire un test sous windows et linux: faire un hello world, le compiler sous linux et windows, et comparrer les .o
{C, H} ==Compilataion==>> {O} ==Link ==>Exe
mais ça manque une étape très intérrésante, là ou on obtient un fichier .ASM
Donc c'est :
{C, H} ==Compilataion==>>{.ASM} ===>Assembleur===>{.OBJ} ==Link: éditeur de lien ==>Exe
Mon problème est au niveau de fichier .ASM : qui contient les instructions intelligibles au point de vue processeur!
mais ça manque une étape très intérrésante, là ou on obtient un fichier .ASM
Donc c'est :
{C, H} ==Compilataion==>>{.ASM} ===>Assembleur===>{.OBJ} ==Link: éditeur de lien ==>Exe
Mon problème est au niveau de fichier .ASM : qui contient les instructions intelligibles au point de vue processeur!
Tigzy, les instructions Assembleur dépend fortement de type du processeur et
consulter le sujet principale de cette discussion en cours!!
vous pouvez ainsi comprendre mon problème ;-)
consulter le sujet principale de cette discussion en cours!!
vous pouvez ainsi comprendre mon problème ;-)
je t'ai répondu avec les "jeux d'instruction".
dis nous de quel processeur motorola tu parles, et on te dira s'il accèpte ton exe.
de toute facon: exe = windows (généralement, meme si je sais que les symbian aussi utilisent exe) =>windows = x86
dopnc en gros, comme windows ne tourne que sur des plateformes x86, si tu lance ton exe sous windows, c'est que t'es sur du x86. Y a pas a chipoter !
la compilation dépend de l'OS et de la machine ....
donc bon, si tu précises pas mieux le cas de ton utilisation, qui d'après ce que j'ai compris n'est pas un cas réel, on ne pourra pas t'aider plus
dis nous de quel processeur motorola tu parles, et on te dira s'il accèpte ton exe.
de toute facon: exe = windows (généralement, meme si je sais que les symbian aussi utilisent exe) =>windows = x86
dopnc en gros, comme windows ne tourne que sur des plateformes x86, si tu lance ton exe sous windows, c'est que t'es sur du x86. Y a pas a chipoter !
la compilation dépend de l'OS et de la machine ....
donc bon, si tu précises pas mieux le cas de ton utilisation, qui d'après ce que j'ai compris n'est pas un cas réel, on ne pourra pas t'aider plus
quand tu dis x64, tu veux dire x86_64: les extentions 64 bits des processeurs de série x86 (les core 2 duo,, les i3, i5, i7 et tous les processeurs commerciaux.
Il ne faut pas confondre x86_64 et IA64 (processeurs ITANIUM), qui ne sont pas compatibles !!!!!
windows est aussi disponible pour les IA64 mais c'est uen version spéciale
Il ne faut pas confondre x86_64 et IA64 (processeurs ITANIUM), qui ne sont pas compatibles !!!!!
windows est aussi disponible pour les IA64 mais c'est uen version spéciale