Frage

Ich bin versucht zu überqueren-Kompilierung auf AIX mit dem xlc / xlC Compiler.

Der Code kompiliert erfolgreich, wenn es verwendet die Standardeinstellung auf einem anderen Rechner. Der Code tatsächlich erfolgreich kompiliert mit der Cross-Kompilierung, aber das Problem kommt aus dem Linker. Dies ist der Befehl, der die Objekte miteinander verknüpft:

$(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)

Wenn ich den Code zu verknüpfen versuchen, erhalte ich mehrere undefinierte Symbole: .setsockopt (int, int, int, const void *, unsigned long), .socket (int, int, int), .Connect (int, const sockaddr *, unsigned long), etc.

Ich habe entdeckt, dass die fehlenden Symbole aus der Standard-C-Bibliothek sind, libc.a. Wenn ich die Symbole mit nm für die libc.a nachgeschlagen, die aufgenommen wird, dürfen Sie die Symbole in der Tat existieren. Ich vermute, dass es möglicherweise ein Problem mit dem C ++ nicht in der Lage, die C-Objekte zu lesen, aber ich drehe wirklich im Dunkel.

War es hilfreich?

Lösung

Sound wie könnte es eine C ++ Name Mangeln Problem sein.

Ausführen nm auf dem Objektdateien, die Symbole, um herauszufinden, dass sie suchen. Dann vergleichen Sie die genauen Namen gegen die Bibliotheken.

Dann die Kompilation Befehle prüfen, um sicherzustellen, dass die richtige Version der Header-Dateien enthalten ist - vielleicht ist es mit dem Kopie des Mutter O versehentlich

Andere Tipps

Ich war schließlich in der Lage, dies zu umgehen. Es sieht aus wie ich die C ++ Compiler für .c-Dateien wurde mit. Unter Verwendung der XLC-Compiler anstelle der xlC Compiler für C dieses Problem beheben Dateien.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top