compilation pour une autre plateforme avec Xcode ?

iManu

Membre actif
23 Février 2001
633
19
Toulouse
Une question rapide qui m'a été posée par un Linuxien à qui je montrais Xcode:
Est-il possible de développer, avec Xcode, une appli pour un autre environnement que Mac Os ?
Je crois que Code Warrior le permettait, mais là je sais pas...

Merci pour lui :)
 
Xcode 1.2 a apporté le support partiel des autres plateformes avec l'introduction des SDKs.
Mais il est seulement possible de développer pour Mac OS X 10.1.5, 10.2.7 et 10.3.0...

A+ ;)
 
Ca dépend essentiellement des librairy ou API que tu vas utiliser.
Par exemple, carbon et cocoa ne sont pas portable, par contre, l'API Java Swing l'est.
 
XCODE c'est e fait GCC et les outils gnu empaquetés.

tu peux très bien télécharger le compilteur gnu pour te créer un Croscompilateur qui te permettra de fabriquer des exécutable pour plusieurs plate-forme.

linux ppc linux x86 linux sparc bsd (free net sur x86 ppc 68k etc.) solaris hp-ux solaris 32 ou 64 bits pour x86 ou sparc. pour zaurus (un pda de sharp) pour yopi un autre pda ou tout un tas d'autre truc.

le tout piloté et édité dans xcode.

les contraintes principales il te faut recompiler le compilateur gnu gcc et c pas de la tarte.
il te faut un espace disque en conséquence car il te faut toutes les librairie dynamique de tous les os cible

et enfin tu ne peux utiliser que des API existante sur les plate-forme cibles.

bref pas de carbon ni de cocoa.

c'est très réducteur.

reste une solution bancale expérimentale enfin pas au top
utiliser un framework qui existe sur les cibles de ton choix.
qt de troltech existe pour mac windows unix gratuis pour un usage non comercial.
wxwindows est un outil du même genre.

kde pour linux et mac (enfin partiellement au travers de x11 pas une vraie appli mac)

gnustep toujours laborieux. existe sous linux et les unices windows (instable) macos (cocoa) mais aussi sur les pda linux myStep existe sur zaurus yopi et quelques autres.

dans tout les cas la tache ne sera pas immédiate.

nos amis guillons & frêres ont eux développé leur propre librairie de portage. (un espèce d'API MacOS sur windows)

A+JYT
 
sekaijin a dit:
...
tu peux très bien télécharger le compilteur gnu pour te créer un Croscompilateur qui te permettra de fabriquer des exécutable pour plusieurs plate-forme.

...
les contraintes principales il te faut recompiler le compilateur gnu gcc et c pas de la tarte.
il te faut un espace disque en conséquence car il te faut toutes les librairie dynamique de tous les os cible

et enfin tu ne peux utiliser que des API existante sur les plate-forme cibles.

...
Hmm, c'est un sujet qui m'intéresse bcp. :up:
Qu'entends tu dire qu'il faut toutes les librairie dynamique de tous les os cible ? :confused: Concrètement, que signifie avoir les librairie dynamique PPC sur Intel ? Veux tu dire avoir les codes soures des librairie sur Intel (ou compiler ces sources en libs pour Intel. Bon, ça revient au même ;) ) ?
 
Bonjour,

La première question que je me pose est la suivante, imaginons que je veuille compiler une application pour Windows sur Macintosh:
Même si je trouve un compilateur C (quitte à le compiler avec GCC puis a l'utiliser à la place de GCC) qui puisse compiler du code Intel sur Mac, le format de libraires Microsoft va t il etre accepté par le linker Macintosh de XCode ? Je craint bien que non...

Deuxième question, plus fondamentale, quel est l'interet de la chose ? Quel est l'interet de compiler un programme que l'on ne peut pas tester ? Car si l'on dispose de la machine cible, autant compiler sur elle, non ?

Cordialement
 
Bon, toute réflexion faite, je me permets de répondre moi-même aux questions que j'ai posées dans mon post précédent.

- Recompilation du compilateur gcc
Si un gcc pour une plate-forme ne compiler que pour cette plate-forme, c'est justement une question d'utilité. A cet égard, la deuxième question de Didier est tout à fait judicieuse.
Cela étant dit, rien n'empêche que l'on recompile gcc afin qu'il puisse, à partir d'un seul OS, cracher des codes binaires des OS cibles. Ca fait grossier énormément le compilateur et n'a qu'un intérêt limité pour un compilateur généraliste comme gcc.
Par contre, c'est différent avec les compilateurs spécifiques. Je pense notamment au développement des applications embarquées (que je n'ai pas fait personnellement :rateau: ) où, je crois, la compilation et le débogage cross platform sont fréquents.

- les librairies dynamiques des OS cibles
A partir du moment où ces libraires ne sont pas destinés à l'exécution sur l'OS du développement et ne servent qu'au linkage, il suffit que le compilateur sache les lire selon les formats des OS cibles. Les codes sources n'y ont rien à voir. Je retire donc mes questions dans mon post précédent.
Par parenthèse, sur la 1ère question de Didier, ce n'est clairement pas une question de faisabilité. Xcode pourrait très bien accepter le format de libraires Microsoft.
 
OUI, pour GNUstep --> www.gnustep.org
C'est une implémentation libre de openstep, et c'est donc compatible avec cocoa. Il utilise Xfree pour l'instant (le but ultime c un serveur postscript), donc fonctionne sous tous les Unix.
 
mon propos était simplement de dire que cela est faisable.

je n'ai pas dis que c'était la bonne solution.

le fait de disposer d'un croscompiler est utile lorsque la machine cible ne peut accueillir le compilateur.

par exemple si vous avez un de ces petits machin qu'on appelle zaurus. vous avec un linux en main sur Xscale et si vous voullez compiler vos propres applis le zaurus n'est pas le trop top pour le faire.

dans un tel cas un croscompiler est bien pratique.

mais comme je le dissais il faut enplus avoir les headers et autres fourbis pour pouvoir sortir du code zaurus.

à ce propos il existe un MyStep qui est une version de gnuStep pour pda.

comme quoi le mon Step prends parfois des chemins ...

Au final je suis d'accord avec les frères guillon pour dire que si on à la machine cible mieux vaut s'en servir.

A+JYT
 
Pour la création d'application multi-plateformes, les 2 seules solutions viables que je connaisse c'est JAVA ou QT.

Avec QT on a un outil (qmake) dans lequel on indique la PF cible, et qui se charge de générer les makefile etc.

La même appli peut être recompilée indifféremment sous Linux, tous les Unix avec X11, Cocoa, ou Win32.