Domanda

Sto tentando la compilazione incrociata su AIX con le XLC / XLC compilatori.

Il codice compilato correttamente quando si utilizza le impostazioni predefinite su un'altra macchina. Il codice effettivamente compilato correttamente con il cross-compilazione, ma il problema viene dal linker. Questo è il comando che lega gli oggetti insieme:

$(CHILD_OS)/usr/vacpp/bin/xlC -q32 -qnolib -brtl -o $(EXECUTABLE) $(OBJECT_FILES)   
-L$(CHILD_OS)/usr/lib  
-L$(CHILD_OS)/usr/vacpp/lib/profiled  
-L$(CHILD_OS)/usr/vacpp/lib  
-L$(CHILD_OS)/usr/vac/lib  
-L$(CHILD_OS)/usr/lib  
-lc -lC -lnsl -lpthread  
-F$(CHILD_OS)$(CUSTOM_CONFIG_FILE_LOCATION)

Quando si tenta di collegare il codice, ottengo diversi simboli non definite: .setsockopt (int, int, int, const * vuoto, unsigned long), .socket (int, int, int), .Connect (int, const sockaddr *, unsigned long), ecc.

ho scoperto che i simboli mancanti sono dalla libreria standard C, libc.a. Quando ho guardato i simboli con nm per la libc.a che viene raccolto, effettivamente esistono i simboli. Sto indovinando che ci potrebbe essere un problema con il C ++ non essere in grado di leggere gli oggetti C, ma sono veramente le riprese al buio.

È stato utile?

Soluzione

Audio come potrebbe essere un nome C ++ pressare problema.

Esegui nm sull'oggetto file per scoprire i simboli che stanno cercando. Quindi confrontare i nomi esatti contro le librerie.

Poi controlla i comandi di compilazione, per garantire che la versione corretta dei file di intestazione viene incluso -? Forse è compresa la copia del sistema operativo genitore per errore

Altri suggerimenti

sono stato finalmente in grado di ottenere intorno a questo. Sembra che stavo usando il compilatore C ++ per i file .c. Utilizzando il compilatore XLC invece del compilatore per C XLC file risolto questo problema.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top