Frage

Ich versuche, eine lib mit g ++ erstellen 4.0.1, aber es sieht für _main (das absichtlich nicht im Code). Muss ich einen _main setzen es in oder kann ich mit einigen geschickten Schalter umgehen? Meine aktuelle Befehlszeile wie folgt aussieht:

g++ -shared -o mylib.so myobj1.o myobj2.o ...

Auf einer Nebenbemerkung Ich bin mit g ++ powerpc-Apfel-darwin9, aber ich glaube / hoffe, dass dies irrelevant sein sollte. Ein vollständigere Ausdruck:

$g++ -O0 -ggdb -fPIC -D_DARWIN_C_SOURCE -D_STLP_THREADS -D_POSIX_PTHREAD_SEMANTICS -Istlport/stlport -Iutf8cpp -Ifreealut-1.1.0/include -Iode-0.11.1/include -Iode-0.11.1/ode/src -Iode-0.11.1/ode/src/joints -Iode-0.11.1/OPCODE -Iode-0.11.1/GIMPACT/include -Iode-0.11.1/ou/include -DPOSIX -D_XOPEN_SOURCE=600 -D_DEBUG -D_CONSOLE -DPNG_NO_ASSEMBLER_CODE -DdSingle -DdTLS_ENABLED=1 -DHAVE_CONFIG_H=1 -DLEPRA_WITHOUT_FMOD -framework OpenGL -framework CoreServices -framework OpenAL -DMAC_OS_X_VERSION=1050 -Wno-unknown-pragmas -o myfile.o -c myfile.cpp

$g++ -shared -framework OpenGL -framework AppKit -framework Cocoa -lobjc -lstlport -framework CoreServices -Lstlport/build/lib/obj/gcc/so -L. -Lopenal-soft-1.10.622 -Lfreealut-1.1.0/admin/VisualStudioDotNET/alut -L../Lepra -L../TBC -L../Cure -L../UiLepra -L../UiTBC -L../UiCure -L../Life -framework OpenAL -o libThirdParty.so myfile.o
Undefined symbols:
  "_main", referenced from:
      start in crt1.10.5.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make: *** [libThirdParty.so] Error 1
War es hilfreich?

Lösung

Die Lösung ist, den Compiler zu aktualisieren. Wie von Adil erwähnt, scheint 4.1.2 zu arbeiten. Ich selbst auf 4.3.4 aktualisiert und das hat super funktioniert auch.

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