Compilazione con MacOS specificando la versione gcc e g++

raff5184
Ciao,
devo compilare un software con MacOS. Per farlo devo lanciare il Makefile del programma col comando make. Però, avendo Snow Leopard con XCode 3 la versione di gcc e g++ è la 4.2 mentre io dovrei lanciare la compilazione con gcc 4.0 e g++ 4.0.. E' possibile farlo (da riga di comando)?

Risposte
svarosky90
la versione dovrebbe essere quella installata su osx. Il compilatore è interno al mac. Xcode non installa il compilatore, usa solo quello interno gia installato nel computer... .Cmq perchè vuoi compilare con il 4.0 anzichè con il 4.2? Vedrai cambia molto poco....

raff5184
innanzi tutto grazie della risposta. Mi occorre la 4.0 altrimenti ho un errore di compilazione. Il supporto tecnico del programma mi ha detto che dipende da questo problema

svarosky90
ciao ... senti è complicato .... dovresti provare a reinstallare il compilatore.... però non credo che sia un operazione semplice visto che è gia incluso nel sistema operativo... dovresti cercare su internet delle versioni del gcc e del g++ 4.0 da sostituire a quelle 4.2

raff5184
non riesco a trovarle... Dovrei installare xcode 2 ma non lo trovo sul sito dell'ADC
Un' altra possibilità è quella di usare xcode senza passare per la riga di comando. Lì dall'interfaccia di xcode potrei selezionare in un menù a tendina la versione del compilatore. Ma non so come importare l'intero progetto in xcode e poi lanciare il makefile

Rggb1
"raff5184":
innanzi tutto grazie della risposta. Mi occorre la 4.0 altrimenti ho un errore di compilazione. Il supporto tecnico del programma mi ha detto che dipende da questo problema

Uhu? Strano... che errore di compilazione?

raff5184
"Rggb":
Uhu? Strano... che errore di compilazione?


questo:
"IO_ParseNodeIdHostOrNetworkAddress(char const*, address_info_struct*, int*)", referenced from:
MacDot16BsInit(Node*, int, NodeInput const*)in mac_dot16_bs.o
"WEATHER_ProcessEvent(Node*, message_str*)", referenced from:
NODE_ProcessEvent(Node*, message_str*) in node.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make: *** [../bin/qualnet] Error 1


e questo è quanto mi hanno risposto:
It seems that you are not using correct gcc and g++ versions.
To compile QualNet source code or custom addons on Mac OS X, gcc 4.0 and g++ 4.0 are required. They may be obtained by downloading Xcode 2 from Apple’s website site or by installing it from the Mac OS X Installation DVD.

Rggb1
e questo è quanto mi hanno risposto:
It seems that you are not using correct gcc and g++ versions.
To compile QualNet source code or custom addons on Mac OS X, gcc 4.0 and g++ 4.0 are required. They may be obtained by downloading Xcode 2 from Apple’s website site or by installing it from the Mac OS X Installation DVD.

Great... ovvero riferimenti mancanti == cambia versione, vabbè può anche essere. Hai provato però a lavorare un po' sul codice?

raff5184
veramente no perché non creo applicazioni ma faccio solo simulazioni con le librerie esistenti

svarosky90
cmq è molto difficile che un downgrade del compilatore possa risolvere questo problema....

raff5184
già ma almeno vorrei provarci, lanciare la simulazione specificando la versione non mi costa nulla.. se fosse possibile

Rggb1
"raff5184":
già ma almeno vorrei provarci, lanciare la simulazione specificando la versione non mi costa nulla.. se fosse possibile


Hai provato a scaricare i sorgenti di GCC della versione che ti serve

http://gcc.gnu.org/gcc-4.0/

e ricompilare questi? Del resto un compilatore che l'hai...

caminac
l'errore è dato dal fatto che il corpo delle funzioni
IO_ParseNodeIdHostOrNetworkAddress e WEATHER_ProcessEvent
non viene trovato.

Le cause possono essere tante:
1. Queste funzioni fanno parte delle librerie legate all'ambiente di sviluppo (quindi 'viaggiano' assieme al
compilatore) e sono state tolte dalla nuova versione (normalmente vengono rimpiazzate da altre)
2. Le funzioni fanno parte della tua libreria ma, per qualche ragione sono 'decorate' in modo diverso,
questo solo in caso di compilatore C++, che aggiunge caratteri vari al nome della funzione per identificarne il prototipo corretto.
Se la libreria ed il tuo codice sono compilati con compilatori diversi o opzioni di compilazione diverse, è possibile
che il linker non riesca ad effetture il collegamento. In ogni caso puoi effettuare un 'dump' della libreria contro cui stai linkando
per vedere che i simboli siano effettivamente presenti nella libreria in cui vengono cercati. Purtropp non ricordo come si chiama
il tool per il dump delle librerie.

potrebbero esserci altre cause, magari posta anche la riga che ha generato l'errore

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.