Portabilité et environnements

mogwai93 Messages postés 362 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 4 novembre 2023 - 17 juil. 2008 à 09:34
s@ldon Messages postés 140 Date d'inscription samedi 1 novembre 2003 Statut Membre Dernière intervention 30 septembre 2009 - 17 juil. 2008 à 19:30
Bonjour

Je voudrais savoir ce qu'il en est à propos des codes "portables" :
le même source qui peut fonctionner sur plusieurs environnements (Windows, Linux, ...)

Est-ce qu'il est obligatoire d'installer un compilateur dans chaque environnement ou
peut-on à partir d'un environnement générer l'exécutable de l'environnement de son choix ?

exemple :
on est sous Windows
on a codé un code sensé fonctionner sur plusieurs environnements (avec une lib existante sur plusieurs environnement) et à la compilation, on désire obtenir l'executable Linux  (que l'on ne pourra tester que dans un environnement linux)

Merci

5 réponses

s@ldon Messages postés 140 Date d'inscription samedi 1 novembre 2003 Statut Membre Dernière intervention 30 septembre 2009 3
17 juil. 2008 à 10:17
J'ai déja vu l'inverse : sous Linux, on génère un exe pour Windows.
Cela s'appelle du cross compiler (compilateur croisé). Il faut pour cela utiliser Wine.
Tu as un exemple utilisant Qt ici (http://doc.qtfr.org/post/2007/04/10/Cross-Compilation-Native-dapplication-Qt-depuis-Linux).
Mais tu devras installer un compilo Windows et le faire tourner avec Linux.
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
17 juil. 2008 à 16:23
Salut,

Sous Windows, le fait que l'on retrouve toujours les mêmes fonctions dans les même dll de l'OS (CreateWindow dans user32.dll, GetCommandLineA dans kernel32.dll...) garantit la compatibilité au niveau binaire. On peut compiler sous XP et exécuter le binaire sous Vista sans trop de problèmes en général.

Je me suis laissé dire que sous Linux, les binaires était moins portables que sous Windows. Je n'ai jamais trop saisi le système de librairies telles qu'elle sont utilisé sous Linux, où les .so (dll sous Linux) doivent être dans la bonne version (On m'a toujours dit qu'un exe qui veut toto.so en version 1.2 ne se satisfait pas de toto.so en version 1.3) Les infos données par la command ld font assez peur.

Philosophiquement, les Linux et Unix sont plus orienté compatibilité au niveau source (Pour ce qui est du C tout du moins). Les sources en C compilent plutôt bien sur les unix, linux, mac et quelques OS propriétaires. Par contre, porter ces sources sous Windows peut poser problème du fait de l'inclusion de header absent sous Windows (signal.h, tout ce qui est communication inter process, thread...). De même, on ne peut pas (A part en regardant du côté de Wine) espérer compiler un source faisant une include de windows.h sous Linux.

En gros pour faire du source portable faut se limiter aux includes des fichiers de cette page (Sans le c devant).
Ce qui limite beaucoup...
Ou alors profiter d'une librairie portable (GTK/GTK+, QT, wxWidgets...) Mais faut qu'elle soit installée sur le PC cible, ou la fournir.
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
17 juil. 2008 à 16:36
Ah zut, je voulais dire ldd, pas ld. Ld à l'air d'être le loader.
0
mogwai93 Messages postés 362 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 4 novembre 2023
17 juil. 2008 à 19:03
c'est + le côté windows / linux qui m'interesse pour le moment

pour windows / windows : j'ai déjà testé
à part quelques API qui ne fonctionnent pas sur 9x/Me et d'autres qui ne fonctionnent que sur Vista
jusque là je n'ai pas encore rencontré de soucis

Je commence à m'intéresser à Linux, donc je voulais voir du côté de GTK ou QT (pas encore fait le choix)
et je n'ai pas trop envie d'avoir plusieurs sources pour le même programme (ou au moins, le moins de différence possible)
C'est surtout la portabilité des sources (plutot que du binaire) qui m'intéresse

Merci pour les liens, je vais commencer à réfléchir dessus 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
s@ldon Messages postés 140 Date d'inscription samedi 1 novembre 2003 Statut Membre Dernière intervention 30 septembre 2009 3
17 juil. 2008 à 19:30
Ouais, pour Linux, il te faudra compiler ton programme pour chaque distrib... Or, supposons, et cela doit être le cas, que ton code est multi-plateforme, donc compilable sur la plupart des Unix, l'utilisateur Linuxien, utilisant son gestionnaire de paquet favori, telecharge le code source, et exécute les commandes de base, à savoir : « configure » et ensuite « make && make install ».
Voili voila, monsieur Linux dispose de ton programme.

Pour ce qui est des dépendances, c'est le gestionnaire de paquet qui s'en occupe...rien à ajouter sur ce point.

Ensuite, Gtk,Qt,WxWidget,... il y en a plein. A toi de faire ton choix, mais tous ces frameworks existent sous Unix et sous Windows...Ce n'est qu'une question de langage (c ou c++ entre autres). La source sera protable...si tu codes proprement...
0
Rejoignez-nous