2011-08-21 8 views
15

Ho un sistema Lion (10.7.1) su cui ho installato Xcode 4.2. Supponiamo di avere un semplice programma C helloWorld.c come segue:Come posso aggiungere il supporto PPC/PPC64 a Xcode 4.2 in Lion?

#include <stdio.h> 
main() { 
    printf("hello, world\n"); 
} 

Usando questa configurazione, desidero provare a compilare helloWorld.c per l'uso su PPC e PPC64, esempio:

$ gcc -arch ppc helloWorld.c -o helloWorld 

Questo dà il seguente messaggio di errore:

llvm-gcc-4.2: error trying to exec '/usr/bin/../llvm-gcc-4.2/bin/powerpc-apple-darwin11-llvm-gcc-4.2': execvp: No such file or directory 

Come faccio a ripristinare il supporto per PowerPC alla mia installazione Xcode 4?

Ho provato le istruzioni delineate in this previous Stack Overflow post, ma queste istruzioni non funzionano per l'installazione di Lion.

Sto usando il Xcode 3.2.6 installer located on Apple's dev site.

Dai collegamenti simbolici, ho il sospetto che quelle istruzioni funzionino per un'installazione 10.6, ma non 10.7.

In ogni caso, alcuni dei file di origine e delle directory dall'installazione di Xcode 3.2.6 non esistono per creare collegamenti simbolici o si trovano altrove nell'installazione di Xcode 3. (Ad esempio, non esiste una directory /Xcode3/usr/bin da cui collegare il binario as.)

Qualcuno ha avuto fortuna con la compilazione di binari PPC e PPC64 da un sistema Lion?

Per ricevere il premio, si prega di scrivere una risposta ragionevolmente dettagliata. Per me stesso, ma anche per i posteri. :)

EDIT al 31 Ago - 2011

Così ho provato le modifiche che Laurent indicò e ricevuti più avanti, ma questo non è stato sufficiente per ottenere il supporto PPC di lavoro.

ho aggiunto i link simbolici per cercare di aiutare gcc lungo nel trovare le risorse di cui ha bisogno:

$ sudo ln -s /Xcode3/usr/llvm-gcc-4.2/bin/powerpc-apple-darwin10-llvm-gcc-4.2 /usr/llvm-gcc-4.2/bin/powerpc-apple-darwin10-llvm-gcc-4.2 
$ sudo ln -s /Xcode3/usr/llvm-gcc-4.2/bin/powerpc-apple-darwin10-llvm-g++-4.2 /usr/llvm-gcc-4.2/bin/powerpc-apple-darwin10-llvm-g++-4.2 
$ sudo ln -s /Xcode3/usr/llvm-gcc-4.2/bin/powerpc-apple-darwin10-llvm-gcc-4.2 /usr/llvm-gcc-4.2/bin/powerpc-apple-darwin11-llvm-gcc-4.2 
$ sudo ln -s /Xcode3/usr/llvm-gcc-4.2/bin/powerpc-apple-darwin10-llvm-g++-4.2 /usr/llvm-gcc-4.2/bin/powerpc-apple-darwin11-llvm-g++-4.2 

Quando ho provato a compilare la mia applicazione di test, ho un sacco di errori:

$ gcc -arch ppc helloWorld.c -o helloWorld 
powerpc-apple-darwin11-llvm-gcc-4.2: 2: No such file or directory 
In file included from /usr/include/stdio.h:64, 
       from helloWorld.c:1: 
/usr/include/sys/cdefs.h:540:4: error: #error Unknown architecture 
In file included from /usr/include/sys/_types.h:33, 
       from /usr/include/_types.h:27, 
       from /usr/include/stdio.h:67, 
       from helloWorld.c:1: 
/usr/include/machine/_types.h:36:2: error: #error architecture not supported 
In file included from /usr/include/_types.h:27, 
       from /usr/include/stdio.h:67, 
       from helloWorld.c:1: 
/usr/include/sys/_types.h:94: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘__darwin_blkcnt_t’ 
/usr/include/sys/_types.h:95: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘__darwin_blksize_t’ 
/usr/include/sys/_types.h:96: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘__darwin_dev_t’ 
/usr/include/sys/_types.h:99: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘__darwin_gid_t’ 
/usr/include/sys/_types.h:100: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘__darwin_id_t’ 
/usr/include/sys/_types.h:101: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘__darwin_ino64_t’ 
/usr/include/sys/_types.h:103: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘__darwin_ino_t’ 
/usr/include/sys/_types.h:107: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘__darwin_mach_port_name_t’ 
/usr/include/sys/_types.h:108: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘__darwin_mach_port_t’ 
/usr/include/sys/_types.h:109: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘__darwin_mode_t’ 
/usr/include/sys/_types.h:110: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘__darwin_off_t’ 
/usr/include/sys/_types.h:111: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘__darwin_pid_t’ 
/usr/include/sys/_types.h:131: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘__darwin_sigset_t’ 
/usr/include/sys/_types.h:132: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘__darwin_suseconds_t’ 
/usr/include/sys/_types.h:133: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘__darwin_uid_t’ 
/usr/include/sys/_types.h:134: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘__darwin_useconds_t’ 
... 
/usr/include/secure/_stdio.h:62: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘__DARWIN_LDBL_COMPAT’ 
/usr/include/secure/_stdio.h:67: error: expected declaration specifiers or ‘...’ before ‘size_t’ 
/usr/include/secure/_stdio.h:67: error: expected declaration specifiers or ‘...’ before ‘size_t’ 
/usr/include/secure/_stdio.h:68: error: expected declaration specifiers or ‘...’ before ‘va_list’ 
/usr/include/secure/_stdio.h:69: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘__DARWIN_LDBL_COMPAT’ 
helloWorld.c:3: error: expected declaration specifiers before ‘main’ 
helloWorld.c:5: error: old-style parameter declarations in prototyped function definition 
/usr/include/stdio.h:252: error: parameter name omitted 
/usr/include/stdio.h:252: error: parameter name omitted 
helloWorld.c:5: error: expected ‘{’ at end of input 

Forse ci sono delle opzioni di compilazione che dovrei aggiungere al punto delle intestazioni Xcode3, ma sto cercando in /Xcode3/usr/include e non c'è davvero molto lì.

+0

Si può provare a specificare l'SDK di base e/o la versione GCC ("-sdk /Developer/SDKs/MacOSX10.5.sdk", "GCC_VERSION = 4.2") sulla riga di comando? Ciò imporrà l'uso di GCC al posto del bridge LLVM/GCC. –

+0

Sto usando la riga di comando. Specificare 'export GCC_VERSION = 4.2; gcc -arch ppc -sdk /Developer/SDKs/MacOSX10.5.sdk helloWorld.c -o helloWorld' restituisce lo stesso errore. –

+0

Errore mio, GCC_VERSION = 4.2 funziona solo quando si utilizza xcodebuild. Puoi provare a specificare esplicitamente il compilatore CC = gcc-4.2 o CC =/usr/bin/gcc-4.2? –

risposta

9

Se si esegue un'installazione classica di Xcode 3.2.6 su Lion, il set di strumenti Xcode è disabilitato e non è installato. Ecco perché lo Xcode3/usr/bin non esiste.

Vi consiglio di leggere i seguenti post (leggerli entrambi prima di andare oltre). Descrivono un trucco per ingannare l'installer nell'installazione di tutto.

Quindi, è possibile applicare the trick from the SO entry per ripristinare il supporto PPC in Xcode.

Nota: Non ho ancora testato i passaggi precedenti, ma saremo lieti di ricevere i vostri commenti. Spero che sia d'aiuto.

Modifica 04 Set 2011: Sono riuscito a mettere le mani su una macchina Lion per fare alcuni esperimenti e ottenere alcuni risultati. Li ho raccolti on my blog.

+0

Sembra promettente. Seguirò se scopro qualcosa. –

+1

Solo per dare un seguito, ho ottenuto più di prima, anche se alla fine non ha funzionato. Grazie comunque! –

+0

Ho fatto alcuni esperimenti e ottenuto alcuni risultati. Vedi la modifica della mia risposta. –