2010-05-13 18 views
5

Estoy tratando de construir un binario Universal en MacOSX con g ++. Sin embargo, realmente no funciona. He tratado con este simple código ficticio:g ++ en MacOSX no funciona con -arch ppc64

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

Esto funciona 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 

Sin embargo, esto no es así:

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

Alguna idea de por qué es así?

Estoy en MacOSX 10.6. He instalado Xcode 3.2.2 con todos los SDK con los que viene. GCC 4.2 es el predeterminado. GCC 4.0 produce algunos errores diferentes, aunque se comporta de manera similar.

Respuesta

7

El soporte ppc64 se cayó en Snow Leopard. Todavía puede usar ppc64 si compila y enlaza con Mac OS X 10.5 SDK.

Pruebe el siguiente comando en la línea de comandos:

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 por el uso de 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, si desea utilizar el SDK 10.4, tendrá que utilizar gcc 4.0 (o g ++ 4.0). El GCC 4.2 de Apple no es compatible con el 10.4 SDK.

+0

Aparentemente, Apple no se molestó en actualizar la página man de gcc. – WhirlWind

+4

Bueno, no es realmente un problema de GCC. es que no hay ppc64 en MacOSX10.6.sdk, no es que GCC no admita ppc64. gcc * SÍ * todavía es compatible con ppc64. Simplemente no hay tiempo de ejecución C++ con soporte ppc64 en el SDK 10.6. –

+0

Genial, gracias por eso! Ese comando funciona. ¿Cómo se vería con el 10.4 SDK? Porque no puedo hacer que eso funcione. – Albert

Cuestiones relacionadas