2010-05-13 5 views
5

J'essaye de construire un binaire universel sur MacOSX avec g ++. Cependant, cela ne fonctionne pas vraiment. J'ai essayé avec ce simple code fictif:g ++ sur MacOSX ne fonctionne pas avec -arch ppc64

#include <iostream> 
using namespace std; 
int main() { 
    cout << "Hello" << endl; 
} 

Cela fonctionne très bien:

% g++ test.cpp -arch i386 -arch ppc -arch x86_64 -o test 
% file test 
test: Mach-O universal binary with 3 architectures 
test (for architecture i386): Mach-O executable i386 
test (for architecture ppc7400): Mach-O executable ppc 
test (for architecture x86_64): Mach-O 64-bit executable x86_64 

Cependant, cela ne signifie pas:

% g++ test.cpp -arch i386 -arch ppc -arch x86_64 -arch ppc64 -o test 
In file included from test.cpp:1: 
/usr/include/c++/4.2.1/iostream:44:28: error: bits/c++config.h: No such file or directory 
In file included from /usr/include/c++/4.2.1/ios:43, 
       from /usr/include/c++/4.2.1/ostream:45, 
       from /usr/include/c++/4.2.1/iostream:45, 
       from test.cpp:1: 
/usr/include/c++/4.2.1/iosfwd:45:29: error: bits/c++locale.h: No such file or directory 
/usr/include/c++/4.2.1/iosfwd:46:25: error: bits/c++io.h: No such file or directory 
In file included from /usr/include/c++/4.2.1/bits/ios_base.h:45, 
       from /usr/include/c++/4.2.1/ios:48, 
       from /usr/include/c++/4.2.1/ostream:45, 
       from /usr/include/c++/4.2.1/iostream:45, 
       from test.cpp:1: 
/usr/include/c++/4.2.1/ext/atomicity.h:39:23: error: bits/gthr.h: No such file or directory 
/usr/include/c++/4.2.1/ext/atomicity.h:40:30: error: bits/atomic_word.h: No such file or directory 
... 

Toute idée pourquoi?

Je suis sur MacOSX 10.6. J'ai installé Xcode 3.2.2 avec tous les SDK qu'il contient. GCC 4.2 est la valeur par défaut. GCC 4.0 produit des erreurs différentes, mais se comporte de manière similaire.

Répondre

7

Le support ppc64 a été supprimé dans Snow Leopard. Vous pouvez toujours utiliser ppc64 si vous créez et liez le SDK Mac OS X 10.5.

Essayez la commande suivante à la ligne de commande:

g++ test.cpp -arch i386 -arch ppc -arch x86_64 -arch ppc64 -mmacosx-version-min=10.5 -isysroot/Developer/SDKs/MacOSX10.5.sdk -DMACOSX_DEPLOYMENT_TARGET=10.5 -o test 

Ou pour l'utilisation 10.4 SDK:

g++-4.0 test.cpp -arch i386 -arch ppc -arch x86_64 -arch ppc64 -mmacosx-version-min=10.4 -isysroot/Developer/SDKs/MacOSX10.4u.sdk -DMACOSX_DEPLOYMENT_TARGET=10.4 -o test 

Notez que si vous souhaitez utiliser le SDK 10.4, vous devrez utiliser gcc 4.0 (ou g ++ 4.0). Le GCC 4.2 d'Apple ne supporte pas le SDK 10.4.

+0

Apparemment, Apple n'a pas pris la peine de mettre à jour la page de manuel gcc. – WhirlWind

+4

Eh bien, ce n'est pas vraiment un problème du CCG. c'est qu'il n'y a pas ppc64 dans le MacOSX10.6.sdk, pas que GCC ne supporte pas ppc64. gcc * DOES * supporte toujours ppc64. Il n'y a juste pas de runtime C++ avec le support de ppc64 dans le 10.6 sdk. –

+0

Cool, merci pour ça! Cette commande fonctionne. Comment cela ressemblerait-il au SDK 10.4? Parce que je ne peux pas le faire fonctionner. – Albert

Questions connexes