Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Portabilité et environnements [ Divers / Divers ] (mogwai93)

jeudi 17 juillet 2008 à 09:34:37 | Portabilité et environnements

mogwai93

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

jeudi 17 juillet 2008 à 10:17:57 | Re : Portabilité et environnements

_Jonathan

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.

jeudi 17 juillet 2008 à 16:23:09 | Re : Portabilité et environnements

rt15

Membre Club Administrateur CodeS-SourceS
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.

jeudi 17 juillet 2008 à 16:36:27 | Re : Portabilité et environnements

rt15

Membre Club Administrateur CodeS-SourceS
Ah zut, je voulais dire ldd, pas ld. Ld à l'air d'être le loader.

jeudi 17 juillet 2008 à 19:03:32 | Re : Portabilité et environnements

mogwai93

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 

jeudi 17 juillet 2008 à 19:30:54 | Re : Portabilité et environnements

_Jonathan

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...



Cette discussion est classé dans : linux, environnement, fonctionner, portabilité, environnements


Répondre à ce message

Sujets en rapport avec ce message

Variables d'environnements [ par luhtor ] Bonjour,Je cherche un moyen de récupérer la valeur des variables d'environnement d'un autre processus. Il y a bien les fonctions getenv et putenv, mai Variables d'environnement linux [ par kgonline ] Bonjour tout le monde, Je souhaiterai savoir comment utiliser des variables d'environnement (avec setenv et getenv) pour envoyer et recevoir des info Pour windows, les APIs mais pour LINUX c'est quoi? [ par ndubien ] Bonjour,Je me pose une question que je pense interressante :Sachant que les APIs sont spécifiques à Windows.Quel est l'équivalent d'une API pour Linu adsl [ par lilington ] bonjour tout le mondeje suis dans mes premier pas linux, en faite je commence tout le temps mais me decourage vide de linux cette fois je compte y all Morphing sous Linux [ par lamliki ] Bonsoir.J'aimerai créer un logiciel de morphing d'image, cependant je ne sais comment y procéder ni comment commencer.J'ai opté pour GTK+, mais je che pthread sous Linux ... Ouiiiin... [ par Defaite ] Bonjour à tous.Je suis actuellement sous WinXP et Ubuntu 6.10 et j'utilise Code::blocks pour developper un programme multi-threads. Ce programme march Connexion réseau à une base Access [ par Lucinda000 ] Bonjour,Je vous expose mon problème. J'ai deux PC : un Linux et un Windows. Sur le PC windows, j'ai une base Access que je souhaite exploiter. Ne pouv Problème sous linux [ par Etoiline ] Je suis trop blasée : j'avais commencé un programme avec Dev c++ et il fonctionnait mais à la fac on doit le faire sous linux et là................... completion de code avec kevelop [ par lilington ] salut tout le mondetoujours dans ma migration progressive vers linux (fedora 5) j'ai commencer un peu avec les sockets. cependant comme avec ms visual Gtk+, compil linux et headers [ par nollyflip ] Salut à tous,Je souhaite (un peu pour le fun !) programmer quelques trucs en graphique avec gtk+ avec une couche réseau.Seulement je ne sais pas comme


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version


HTC G1

Entre 449€ et 449€


Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,515 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.