2010-05-13 7 views
5

Sto provando a creare un binario universale su MacOSX con g ++. Tuttavia, non funziona davvero. Ho provato con questo semplice codice fittizio:g ++ su MacOSX non funziona con -arch ppc64

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

Questo funziona bene:

% 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 

Tuttavia, questo non lo fa:

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

Qualsiasi idea perché?

Sono su MacOSX 10.6. Ho installato Xcode 3.2.2 con tutti gli SDK in dotazione. GCC 4.2 è l'impostazione predefinita. GCC 4.0 produce alcuni errori diversi, sebbene si comportino in modo simile.

risposta

7

supporto ppc64 è stato rilasciato in Snow Leopard. Puoi ancora utilizzare ppc64 se crei e link contro l'SDK di Mac OS X 10.5.

Provate il seguente comando nella riga di comando:

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 

o per l'uso 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 

nota, se si desidera utilizzare il 10.4 SDK, si dovrà utilizzare gcc 4.0 (o g ++ 4.0). GCC 4.2 di Apple non supporta l'SDK 10.4.

+0

Apparentemente, Apple non si è preoccupata di aggiornare la pagina man di gcc. – WhirlWind

+4

Beh, non è davvero un problema GCC. è che non c'è ppc64 in MacOSX10.6.sdk, non che GCC non supporti ppc64. gcc * DOES * supporta ancora ppc64. Non c'è solo runtime in C++ con supporto per ppc64 nel 10.6 sdk. –

+0

Fantastico, grazie per quello! Quel comando funziona. Come sarebbe con l'SDK 10.4? Perché non riesco a farlo funzionare. – Albert

Problemi correlati