Sto scrivendo un'applicazione con più sottodirectory. Ho creato una struttura Makefile in modo tale che le sottodirectory compilino il file e facciano "ar rvs" e "ranlib libxxx.a" per creare archivi nella directory superiore per il collegamento.Gcc su OS X: simboli non definiti per l'architettura x86_64
Tuttavia, il comando "ld" sta eseguendo il seguente problema.
ld: warning: ignoring file ./libxxx.a, file was built for archive which is not
the architecture being linked (x86_64):
./libxxx.a Undefined symbols for architecture x86_64:
Sto usando gcc su Mac OS X 10.10.1
ho letto molti messaggi su questo. Ho provato "gcc -arch i386", poi ho incontrato lo stesso errore per i386
Undefined symbols for architecture i386:
ho installato gcc-4.9.2 ed ho provato ad usarlo al posto del gcc di default, senza fortuna. Ho provato a usare x86_64-apple-darwin14.0.0-g ++ - 4.9.2 e questo non è stato d'aiuto.
Grazie per la risposta. Ho provato "CC = gcc -m64" e ho anche usato gcc per eseguire il comando ld.Ma il risultato è lo stesso. Ho solo provato l'opzione -m32 per vedere se funziona se lo rendo coerente, ma per nessun altro motivo. – newprogrammer
Nessuno può aiutarti molto di più se non vediamo un makefile minimale che riproduce il problema. Leggi come creare un MCVE ([Come creare un esempio minimo, completo e verificabile?] (Http://stackoverflow.com/help/mcve)) o SSCCE ([Esempio coretto, autocontenuto, corretto] (http://sscce.org/)) - due nomi e collegamenti per la stessa idea. Il codice MCVE dovrebbe essere probabilmente un file sorgente minimo (e intestazione) per la libreria ('void libfunc (void) {printf ("% s chiamato \ n ", __func__);}', e il tuo programma principale che chiama la funzione di libreria, più uno o due makefile a seconda di come sono disposte le cose: –
Grazie. – newprogrammer