Verknüpfen von WXWidgets in C ++ unter Mac OSX 10.7-Objekten funktioniert nicht

1112
user23127

Für ein plattformübergreifendes Projekt verwenden wir wxwidgets, um eine plattformübergreifende GUI in c ++ zu erstellen. WxWidgets wurde unter Mac OSX 10.7 mit macports installiert. Wir haben keine Probleme mit der Erstellung unseres Quellcodes unter Linux und Windows.

Das Kompilieren unserer verschiedenen Klassen funktioniert auf Mac gut. Wenn wir jedoch versuchen, die Objekte zu verknüpfen, werden folgende Fehler / Warnungen angezeigt:

ld: warning: ignoring file ../../obj/games.o, file was built for unsupported file format which is not the architecture being linked (i386) ld: warning: ignoring file ../../obj/lobby.o, file was built for unsupported file format which is not the architecture being linked (i386) ld: warning: ignoring file ../../obj/ConfigFile.o, file was built for unsupported file format which is not the architecture being linked (i386) ld: warning: ignoring file ../../obj/net.o, file was built for unsupported file format which is not the architecture being linked (i386) ld: warning: ignoring file ../../obj/protocol.o, file was built for unsupported file format which is not the architecture being linked (i386) Undefined symbols for architecture i386: "_main", referenced from: start in crt1.10.6.o ld: symbol(s) not found for architecture i386 collect2: ld returned 1 exit status 

Es scheint, als könnte gcc die Dateien nicht verknüpfen. Wenn wir eine Datei gleichzeitig kompilieren und verlinken möchten, erhalten wir ein funktionierendes Programm. Da wir jetzt mehrere Dateien haben, die wir verlinken möchten, können wir dies nicht gleichzeitig tun. Wir verwenden das folgende Makefile:

https://github.com/timvdalen/OGO-2.3/blob/master/src/lobby/Makefile

Dort ist auch unser Quellcode enthalten. Ich verwende folgende Version von gcc:

gcc --version i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.9.00) Copyright (C) 2007 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 

Hat jemand eine Idee, wie wir diese Dateien verlinken können?

1

1 Antwort auf die Frage

1
user23127

Ich habe die Antwort schon selbst gefunden: Sie müssen mit kompilieren g++ -arch i386. Der Linker scheint nur im 32-Bit-Modus zu verlinken.