Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 18/01/2006, à 10:52

olivir

byte-compiled sous XP

Bonjour,

J'avais cru comprendre que les scripts byte-compiled ne pouvaient fonctionner que spécifiquement sur le type de plateforme qui les avait créés. En clair, compilé sous Linux fonctionne sous Linux, compilé sous XP fonctionne sous XP.

D'ailleurs il me semble avoir fait le test et compilé sous Linux un prog qui après ne fonctionnait pas sous Windows XP....

Ben là, j'ai fait un compileall.compile_dir() sous XP, ben le pyc produit fonctionne sous ma Ubuntu !

Je n'y comprends plus rien, quelqu'un peut éclaircir tout cela ?


Olivier
"Le voleur parti
n'a oublié qu'une chose
la lune à la fenêtre."

Hors ligne

#2 Le 18/01/2006, à 19:31

requiem

Re : byte-compiled sous XP

Les programmes python compilés sont exécutés dans une machine virtuelle. Cette machine virtuelle permet de ne pas être dépendant de la plateforme (matérielle ou logicielle).  C'est la même chose qu'avec Java.


Le problème avec Linux, ce n'est pas Linux, c'est le linuxien

Hors ligne

#3 Le 18/01/2006, à 22:05

olivir

Re : byte-compiled sous XP

Ah ben vi, je confonds, les problèmes de "Bad magic number" viennent non pas de problèmes de plateforme mais de problèmes de version de Python ...

Merci requiem !


Olivier
"Le voleur parti
n'a oublié qu'une chose
la lune à la fenêtre."

Hors ligne

#4 Le 18/01/2006, à 22:27

phlinux

Re : byte-compiled sous XP

Si je peux en ajouter un peu ....
En raccourci, un programme c'est la traduction d'un language compréhensible, lisible directement vers un language dit "machine", qui lui l'est nettement moins au premier abord, pour le lui faire executer.
La plupart des fabriquants de processeurs (intel, motorola, zilog....) ont crée leurs processeurs et donc avec un language machine qui lui est propre. De plus ils n'utilisent pas forcement l'arrangement des octets dans le même sens (octet de poids faible ou celui de poids fort en tete : little indian ou big indian) etc etc...
D'où la nécessité de compiler sur chaque plateforme différente des programmes pourtant écrits de manière identique (en C par ex). De plus, suivant l'éditeur de l'OS, les bibliothèques des programmes et autres structures système ne sont pas les mêmes et cela explique que sur une même plateforme intel par exemple un programmme compilé sous linux ne tournera pas (du moins pas directement) sous Winblow.
On a donc crée un interpreteur pour chaque plateforme qui sait traduire un langage intermédiaire indépendant de la plateforme (ou pseudo code) vers le code machine : c'est la machine virtuelle. Par contre, quand on compile son programme, on le traduit en language intermediaire. C'est cette compilation qui va pouvoir passer d'un OS à l'autre ou d'une plateforme à l'autre et sera interprétée par la machine virtuelle.


Ubuntu - Precise Pangolin 64bits
ATI Radeon HD5670

Hors ligne