|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Débutant
|
Bonjour .
une question un peut newbie , mais quand meme je vous demande . Lorsqu'on code une source C par example et en la compile sous Unix . Elle marche normale , mais si en la déplace vers Windows elle marche pas . Malgré que les synthaxe de codage pour le language sont les memes . |
|
|
00
|
|
|
#2 |
|
Membre confirmé
![]() |
Il ne faut pas oublier que les librairies que tu utilises ne sont pas toutes ... "portables"
Donc, dans la stricte utilisation des librairies portables tu ne rencontrera aucun problème (stdio, stdlib... pour ne citer que ces basiques). Saches qu'il y a également des fonctions dans ces librairies qui ne sont pas portables Porter un logiciel ce n'est, en gros, pas copier coller la source et la compiler |
|
|
00
|
|
|
#3 |
|
Débutant
|
@vincent magnin
Merci de l'interet que vous portez vers mon poste , Mais est ce que vous pouvez mieu m'eclairez ? |
|
|
00
|
|
|
#4 |
|
Membre émérite
![]() ![]() |
La portabilitée est importante.
Les appels systèmes et les normes sont différentes.
__________________
Le savoir est un droit universel, libérez le code source Mon site Aidez nous à militer pour l'adoption d'un nouveau smiley "C'est en s'attardant en bas que l'on monte plus haut " "Un home qui veut faire de grande chose doit vivre comme s'il ne devait jamais mourrir !" attention je mords Bye
|
|
|
00
|
|
|
#5 |
|
Débutant
|
La portabilitée , c'est quoi ?
|
|
|
00
|
|
|
#6 |
|
Membre émérite
![]() ![]() |
En informatique, la portabilité d'un programme est caractérisée par sa capacité à fonctionner plus ou moins facilement dans différents environnements d'exécution tels que Windows, Unix ou encore Mac
__________________
Le savoir est un droit universel, libérez le code source Mon site Aidez nous à militer pour l'adoption d'un nouveau smiley "C'est en s'attardant en bas que l'on monte plus haut " "Un home qui veut faire de grande chose doit vivre comme s'il ne devait jamais mourrir !" attention je mords Bye
|
|
|
00
|
|
|
#7 |
|
Débutant
|
Je comprend bien maintenat !
Et pour ma question , Pourquoi ce n'est pas le meme programme si en le compile sous windows ou sous linux ? Est ce que c'est les bibliotheque et library qui sont différente depuis l'un a l'autre ?. |
|
|
00
|
|
|
#8 |
|
Membre émérite
![]() ![]() |
Peut être utilise t-il des librairies qui ne sont pas portables ?
Ou des appels systèmes, ou de la programmation systèmes spécifiques à Unix(threads, sockets, etc...) ? Ou encore des normes de fichiers différentes(POSIX, API windows) ?
__________________
Le savoir est un droit universel, libérez le code source Mon site Aidez nous à militer pour l'adoption d'un nouveau smiley "C'est en s'attardant en bas que l'on monte plus haut " "Un home qui veut faire de grande chose doit vivre comme s'il ne devait jamais mourrir !" attention je mords Bye
|
|
|
00
|
|
|
#9 |
|
Débutant
|
Encore est ce que les biblio de Linux et windows leur contenu synthax est le meme ?
Merci , parce que je ne comprend pas trop bien avec tes explication Shugo78. je sais que tu fait des effort pour m'expliquer , mais bon .... |
|
|
00
|
|
|
#10 | ||||||
![]() ![]() Inscription : juin 2006 Messages : 6 929 ![]() |
Le compilateur ne génère pas du tout le même code tout simplement.
Les fichiers exécutables ont des formats différents (format ELF sous Linux / format PE sous windows, bibliothèque partagée .so sous Linux, bibliothèque dynamique .dll sous Windows). Il y a des formats différents pour les autres systèmes (solaris...) De plus, la plupart du temps, ces programmes font des appels systèmes qui peuvent être différents suivant le système. Les architectures sont différentes, ça peut pas marcher : Exemple code assembleur d'un hello world sur un SPARC : Code :
Code :
Sous Windows XP : Code :
__________________
Je ne répondrai à aucune question technique en privé |
||||||
|
|
00
|
|
|
#11 |
|
Membre émérite
![]() ![]() |
La synthaxe des biblio(standards ou portables) est la même
Mais come l'a dit milie, les formats des fichier éxécutables ne sont pas les mêmes. Et les programmes peuvent faire des appels systèmes propres à un système(comme fork() sous Unix et Create_Thread sous windows).
__________________
Le savoir est un droit universel, libérez le code source Mon site Aidez nous à militer pour l'adoption d'un nouveau smiley "C'est en s'attardant en bas que l'on monte plus haut " "Un home qui veut faire de grande chose doit vivre comme s'il ne devait jamais mourrir !" attention je mords Bye
|
|
|
00
|
|
|
#12 | |||
|
Membre Expert
![]() Inscription : juin 2007 Messages : 968 ![]() |
Citation:
Citation:
Citation:
|
|||
|
|
00
|
|
|
#13 | ||
|
Membre émérite
![]() ![]() |
Citation:
Citation:
__________________
Le savoir est un droit universel, libérez le code source Mon site Aidez nous à militer pour l'adoption d'un nouveau smiley "C'est en s'attardant en bas que l'on monte plus haut " "Un home qui veut faire de grande chose doit vivre comme s'il ne devait jamais mourrir !" attention je mords Bye
|
||
|
|
00
|
|
|
#14 |
|
Débutant
|
Merci a vous tout , mais j'ai rien chopé
C'est pas de votre faute non plus , mais c'est moi une question : le format de l'exécution sur windows c'est .exe et sous unix ? |
|
|
00
|
|
|
#15 | |
|
Membre Expert
![]() Inscription : juin 2007 Messages : 968 ![]() |
Citation:
Sous Unix, il n'y a pas besoin de suffixe. |
|
|
|
00
|
|
|
#16 | ||
|
Membre Expert
![]() Inscription : juin 2007 Messages : 968 ![]() |
Citation:
Citation:
|
||
|
|
00
|
|
|
#17 |
|
Membre Expert
![]() ![]() Inscription : septembre 2006 Messages : 1 036 ![]() |
Les langages de programmation ont tous leurs partie portable, c'est-à-dire indépendante du compilateur utilisé (et non seulement de l'OS), et leurs parties non portables.
Pour le C, tout programme écrit en strict C-ANSI (c'est une norme) devrait compiler et s'exécuter de la même façon partout (y compris sur ces petits micro-contrôleurs dépourvus la plupart du temps d'OS que sont les PIC et autres). Par exemple, la norme C-ANSI fige une partie de la syntaxe et de la sémantique du C, spécifie un minimum de fonctions que l'on doit retrouver dans la librairie C. Les normes ne se limitent pas à figer ou définir des langages : elles peuvent également spécifier des API (Application Programmer Interface), c'est-à-dire des fonctions de base. C'est le cas de POSIX, que l'on retrouve sur Unix et sur les Windows à partir de NT. Le problème intervient lorsqu'un compilateur donné ne respecte pas la norme voulue (ici, le C-ANSI, mais il y en a aussi d'autres, et pour à peu près tous les langages) : ça pose des problèmes de portabilité, c'est-à-dire qu'il va falloir ré-écrire une partie du code pour qu'il s'exécute correctement sur la machine/OS/compilateur cible. Les problèmes de portabilité surgissent aussi parce que les OS/compilateurs ne fonctionnent pas de la même façon et ne présentent pas des API entièrement compatibles (comme Linux et BSD...). En fait, 90% des problèmes de portabilité viennent des compilateurs qui n'offrent pas les mêmes fonctionnalités. Les programmeurs sont souvent tentés d'utiliser des services précis offerts par certains compilateurs et non par d'autres, ce qui, lors de la migration du code source, pose de sérieux problèmes de ré-écriture du code. Cependant, si on s'en tient strictement aux normes, il n'y a jamais de problèmes, du moment que les compilateurs utilisés respectent ces normes (ce sont des choses bien documentées en général). |
|
|
00
|
|
|
#18 | |
|
Membre émérite
![]() ![]() |
Citation:
__________________
Le savoir est un droit universel, libérez le code source Mon site Aidez nous à militer pour l'adoption d'un nouveau smiley "C'est en s'attardant en bas que l'on monte plus haut " "Un home qui veut faire de grande chose doit vivre comme s'il ne devait jamais mourrir !" attention je mords Bye
|
|
|
|
00
|
|
|
#19 |
|
Débutant
|
c'est quoi un suffix ?
une format C'est comme .exe et le suffix quesque tu veux dire avec ? |
|
|
00
|
|
|
#20 |
![]() ![]() Inscription : juin 2006 Messages : 6 929 ![]() |
.exe n'est pas un format, c'est juste une extension (ou suffixe). Essaye de prendre un fichier texte, de le renommer .exe et tu verras
Un format exécutable sous Windows, c'est par exemple le format PE : http://fr.wikipedia.org/wiki/Portabl...le_File_Format
__________________
Je ne répondrai à aucune question technique en privé |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com