Compilation i386
Eddy58
Membre
La procédure à suivre pour compiler en universal binary où en simple exécutable i386 est [url=http://developer.apple.com/documentation/MacOSX/Conceptual/universal_binary/universal_binary_compiling/chapter_2_section_3.html#//apple_ref/doc/uid/TP40002217-//apple_ref/doc/uid/TP40002217-CH206-159440-TPXREF141<br />]ici[/url]. J'ai essayé sur un de mes projets pur Objective-Cocoa et à part quelques warnings à corriger (bénins je pense) n'apparaissant pas lors d'une build PPC, l'application est correctement générée, mais rien encore pour la tester :P, mais normalement ça devrait fonctionner sans accrocs.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Du doit avoir deux exécutables ?
Tes warning, il ne ressemblerait pas à ça :
http://www.objective-cocoa.org/forum/index.php?topic=951.30
Peut-tu mettre un exemple ?
En faites, en plus de cocher les deux cases (dans le cas d'un universal binary), il faut également choisir un autre SDK (Universal) comme sur le grab joint à ce post. Ca se configure en ouvrant les infos du projet dans Groups&Files. Normalement, c'est réglé sur "Current MacOS". Si l'option "Mac OS X 10.4 (Universal)" n'est pas disponible, il faut l'installer en faisant une installlation personnalisée du package XCode 2.1, et en allant cocher la bonne option dans la rubrique "Cross-Development".
Avant de compiler, il faut aussi se mettre en mode "Deployment".
Et puis une fois ceci fait normalement pas de problème, mis à part quelques warnings mineurs.
[Fichier joint supprimé par l'administrateur]
Juste pour information, qu'elle qui se passe si tu compiles un projet avec de l'Altivec.
Non normalement c'est disponible de suite, c'est curieux que tu ne l'ai pas. ???
Je n'en sais rien, pour ça il faut voir la doc universal_binary, voir ce qu'ils disent...
Il faut passer par les libraries de haut niveau (Accelerate.framework) pour être peinard, mais pour ceux qui savaient programmer directement en Altivec... ben ça devient moins intéressant tout-à -coup.
Sinon, vous trouvez que c'est utile, ou pédant, de faire des applis compilées pour Intel dès maintenant ?
+
Chacha
Ben je trouve ça inutile pour le moment, vu que personne n'a encore de MacIntel, à part quelques développeurs. Disons que la compilation Intel permet de procéder à un certain débuggage si des warnings ou des erreurs qui n'apparaissent pas lors de la compilation PPC surviennent. De plus, tant que je n'aurais pas un MacIntel sous la main, je ne mettrais pas la version Intel de mes applis à disposition tant que toutes les fonctions n'auront pas été testées, même si la compilation se passe à merveille, peut-être qu'il y a des vices cachés dans certains cas. Peut-être aussi qu'il n'y en a pas, mais ça me dérange de mettre à disposition une appli dont on est pas à 100% sûr de son bon fonctionnement..:)
On est d'accords; mais en même temps, la version Intel que l'on peut produire a beau être potentiellement plus bugguée, personne ne le saura puisque personne n'a de MacTel pour le moment... sauf quelques développeurs, qui sont, eux, sujets à faire des bugs reports ! Donc il me paraà®t plus intéressant de compiler quand même pour Intel, quitte à mettre dans la doc "expérimental" et indiquer que les bugs reports sont les bienvenus. Au pire, ça marche pas; au mieux, ça marche et tout le monde est content. Et dans tous les cas, ça permet de faire une veille technologique sur la compilation pour Intel : peut-être va-t-on soulever des problèmes intéresants, découvrir des incompatibilités cachées, contribuer à améliorer, en fait !
+
Chacha
Ok, c'est une solution, mais aux risques et périls de l'utilisateur si le soft manipule des données sensibles de celui-ci. Tout dépend de la nature du soft en faites je dirais, si les données sont sensibles, l'utilisateur prendra-t-il le risque d'utiliser une version expérimentale ?
Si les données traitées ne sont pas d'une "grande" importance, alors là oui je pense qu'on peut se permettre de fournir une version intel non testée... Mais d'un autre côté c'est vrai que pour des données sensibles, l'utilisateur peut faire des tests avec des données factices (au détriment de sa productivité il est vrai), et si tout va bien passer en utilisation réelle apres...
J'ai envie de dire "on l'avait prévenu", même si c'est très hypocrite puisque personne ne lit les docs.
En fait, il y a une question que je me pose : si on a un MacIntel, et un programme PPC+Intel. Peut-on exécuter la partie PPC à travers Rosetta, ou est-ce impossible ? Si ce n'est pas possible, on risque d'avoir une dérive "tout Intel" après la grande transition de 2007, même si en théorie il suffirait de décocher la case "Intel" à la compilation pour être sûr de lancer Rosetta... mais ça c'est quand on a le code source, pas quand on est simple testeur !
Oui mais considère le scénario suivant : je suis un jeune développeur; je m'achète un MacIntel. Je crée une appli Universal Binary. Je me rends compte que je ne peux pas tester la partie PPC, puisque c'est automatiquement le code Intel qui est lancé. Donc je décoche la case "PPC", puisque je ne peux pas garantir que le code soit bon. Donc l'appli devient Intel only.
Un vieux développeur vient me voir, il me dit "si tu voulais tester le PPC, tu n'aurais qu'à décocher la case Intel, comme ça tu forcerais Rosetta à se lancer". Ah, ouais, j'aurais pu faire ça. Pfou, pas envie. Trop long de tester deux fois les programmes.
Alors, scénario catastrophe ou pas ?
Qui ça ?? ClicCool ?? ;D
Alors là , je dis que ça sera en la bonne conscience de chacun. Soit on est rigoureux et on fait tout ce qu'il faut pour assurer la fiabilité de l'appli et son support ppc et x86, soit on est pas rigoureux, on se fiche de l'utilisateur d'une certaine façon, et alors là autant changer de boulot ou de hobby, selon l'individu.... :P
Bon anniversaire, au passage
Ouais. Allez, en tant que développeur rigoureux qui aimerait bien tester ses applis sur X86, mais qui ne peut pas car il n'en a pas, je te paye un coupÂ
+
Chacha
A la tienne, et aussi à la santé des cocoaculteurs !
Excellent ! Le premier ordinateur bipro à architecture hybride; même Solaris ne doit pas savoir gérer ça !
Petit aperçu :
Les cartes accélératrices de migration 68k->PPC comportent un 68k pour la bonne exécution de l'OS (AmigaOS 3.x pour 68k), et le PPC pour les applications qui en tirent partis. Mon 1200 est par exemple équipé d'une carte Blizzard comportant un 68040/25MHz et un PPC603e à 166MHz, carte datant de 1997/98 si mes souvenirs sont bons. Les cartes haut de gamme pour Amiga 4000 étaient équipées de 68060 à 50MHz et de PPC604e à 240MHz. Même si l'OS 3.9 est en 68k, des applis tirent partis de la carte accélératrice grâce à un "mini-OS" permettant de programmer le PPC et la carte graphique BVision à base de Permedia 2. De bons jeux de l'époque ont d'ailleurs été adaptés (Heretic 2, Shogo, Quake 1 et 2, Freespace et d'autres). L'AmigaOS 4 full PPC est en développement pour ces cartes, mais fonctionne en pre-release sur des Amigas NG d'architecture moderne. Enfin bon, l'histoire est compliquée de ce côté là ...
Désolé pour le Off-Topic.:P
En faites, je me demande pourquoi un Rosetta dans le sens d'émulation x86->PPC n'existe pas ? Cela rendrait bien service aux développeurs. Techniquement, ce n'est pas impossible, si on peut le faire dans un sens on peut aussi le faire dans l'autre. Peut-être Apple y-a-t-il pensé, mais y a renoncé par peur de voir cette émulateur faire obstacle à sa stratégie de migration, en effet, des utilisateurs verraient sûrement en cet émulateur un moyen de repousser leur achat.
Il ya aussi une autre explication possible : Microsoft risque de vouloir empecher ca. En effet, ca permettrait de faire tourner Windaube sur Mac avec un emulateur beaucoup plus puissant que VitualPC. Faut voir.
Ca a duré un p'tet bout de temps, cette histoire d'applis FAT, qui est en somme l'équivalent des UB
Pourtant y'avait pas beaucoup de deveux à avoir un 68k + un PPC pour tester leur appli... Mais ça a quand même bien marché.
Et rappelez vous aussi le passage de OS9 à OSX.
Encore aujourd'hui (je viens même de vérifier) si on a une appli Carbon (j'ai testé avec photoshop 7, qui est en Bundle mais avec un dossier "MacOS" et un dossier "MacOSClassic"), si on fait Pomme-I sur l'application, on a une case que l'on peut cocher "Ouvrir dans l'environnement Classic"
Pourquoi il n'y aurait pas la même chose pour ouvrir une appli UB dans Rosetta donc en mode PPC, au lieu de l'executer en natif avec le processeur Intel du Mactel ? (ou même en mode x86 sur un mac PPC si Rosetta existe un jour dans l'autre sens)...?
Cela ne devrait pas poser de problème, l'UB, ce n'est ni plus ni moins que deux binaires chacun dans leur fichier dans le bundle du soft.
Je me pose la même question 4 posts au-dessus justement.