Question toute bete, compatibilité linux et differente architectures

J’ai lu que linux est present sur des palm, des pc , des macs, des super odrinateurs.
Mais quel est le point commun entre toute ces distrib?
Est ce qu’un programme concu pour linux sur assistant fonctionnera sur mac ou super ordinateur?

Heu…Ca dépend de quoi on parle.
Linux n’est que le noyau du système. Vu de l’extérieur, il propose les mêmes fonctions systèmes qq l’archi (je simplifie, si tu veux je peux détailler plus…).
Par contre, si tu veux que ton pb soit portable, il faut prendre qlqs précautions :

  1. Il ne faut pas que le code dépende du type de machine donc on doit s’obliger à utiliser des langages qui sont concus pour être portables (le C par exemple). Si on code une partie en assembleur, ça ne tournera que sur un type de machine.
  2. Tout prog de taille respectable utilise une floppée de bibliothèques de fonctions qui ne sont pas toujours dispo…

En théorie, on peut tout porter pour tout type de machine vu qu’on a les sources…en pratique, debian supporte 11 architectures (plus pour longtemps…)

c’est surtout les bibliotheques le probleme… pasque le C en lui meme est bien standardise.

si si encore pour longtemps mais pas en meme temps

“c’est surtout les bibliotheques le probleme… pasque le C en lui meme est bien standardise.” Oui c’est clair mais on trouve en core bcp de codes écrits en vieux C qui tournent sur des vieilles HP par exemple. Le compilateur est un vieux gcc et on ne peux pas y toucher (car ça commande des instruments qui valent…au moins ;)). Résultat : Ca ne compile plus sur les gcc modernes. Sans aller chercher des vieilles archi, bcp de prog C++ (mal écrits) ne compilaient même plus lors passage de gcc2.95 à la branche 3.X.

Debian et les archi : C’est en plein débat et je n’ai pas tout suivi. Mais tu me rassures en disant qu’ils ne vont pas dropper les archi purement et simplement.

Y a justes quelques archi qu’ils vont maintenir activement pour les versions officielles et les autres, ils ne vont plus offrir un même niveau de support.

1/ Mais quel est le point commun entre toute ces distrib?
Le point commun minimaliste c’est le noyau linux. En général de nombreux programmes/bibliothèques sont communs (LSB)

2/Est ce qu’un programme concu pour linux sur assistant fonctionnera sur mac ou super ordinateur?

Un même programme bien conçu pour un PC fonctionnera sur un mac sans trop de problème. Sur un suprecalculateur, il marchera probablement mais n’utilisera pas le qaurt de la moitié du commencement de la puissance du supercalculateur : les super calculateurs utilisent généralement des architectures massivement parallèles (clusters de machines numa) et il faut que les programmes soient correctement parrallélisés pour utiliser la puissance de la machine.

Idem pour les machines embarquées qui ont leurs propres contraintes.

Ceci dit que ce soit sur un supercalculateur ou sur une machine embarqué, le coeur reste linux, et de très nombreux composants sont communs.

le programme concu pour un pc sous linux fonctionnera sur un mac sous linux, vous parlez des sources recompilées pour chaque architecture ou bien du meme programme compilé?
(ma question se resume ainsi : si j’envoie un programme qui fonction sur pc sous linux a un type qui a un mac avec linux, va t il pouvoir utiliser le programme ou devra t il avoir les source et recompiler?)

Merci

Il va bien sur devoir le recompiler,un binaire est propre a chaque os ,et encore plus a chaque architecture ,mais si tu les envoie les sources ca devrait marcher.

Sinon certains livrent en même temps un binaire mac, un pour linux, un pour windows, ET les sources dans le même package (par exemple le jeu cube).

stan126: en général il faut recompiler, mais ça dépend également du lanagage de programmation. Les outils développés en python perl ou java peuvent être réutilisés utilisés sans recompilation.

Les programmes écrits dans un langage interprêté tel que Perl ou Python ne poseront pas de problème comme l’a dit Atek.
Les programmes écrit en Java non plus car ils utilisent une machine virtuelle (un logiciel qui se loge entre le système d’exploitation et le programme proprement dit). Avec Java, tu peux parfaitement compiler ton appli sous Windows et l’exécuter sur Linux/x86 ou MacOSX/PPC ou sur Solaris/Sparc du moment que ton application est entièrement écrite en Java et n’utilise pas le “Java Native Interface”.

Pour les autres programmes, il faut recompiler à condition qu’il n’y ait pas de code assembleur et que les API utilisées soient standardisées.

“Les programmes écrits dans un langage interprêté tel que Perl ou Python ne poseront pas de problème comme l’a dit Atek.”

S’ils sont bien écrits non mais si on fait des appels du genre os.system(commandline) en python, on peut vite arriver à écrire du code non portable :frowning: (c’est du vécu : j’ai relubcp de code python non portable)