2010-02-08 7 views
0

J'essaye de créer une lib avec g ++ 4.0.1, mais il cherche _main (ce qui n'est délibérément pas dans le code). Dois-je mettre un _main là ou puis-je contourner avec un commutateur astucieux? Ma ligne de commande actuelle ressemble à:Création de lib avec g ++ 4.0.1

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

Sur un sidenote J'utilise g ++ powerpc-apple-darwin9, mais je devine/en espérant que cela devrait être hors de propos. Une impression plus complète:

 
$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 
+0

Je ne reçois aucune erreur si la version g ++ est 4.1.2. S'il vous plaît envoyer le message d'erreur et comment vous compilez les fichiers source. – Adil

+0

Je les ai postés, mais je ne suis pas sûr que ça va aider. J'ai essayé de supprimer tout sauf les options -shared et -o, mais sans succès. Je voudrais savoir pourquoi g ++ veut un point d'entrée pour ma bibliothèque partagée. Savez-vous de quelle raison il pourrait en vouloir un? Bug dans 4.0.1? "Entrée DLL"? –

+0

Vous ne savez pas quel est le problème, mais vérifiez les liens: http://forums.codeblocks.org/index.php/topic9934.0 http://discussions.apple.com/thread.jspa?messageID=9703700 – Adil

Répondre

1

La solution consiste à mettre à niveau le compilateur. Comme indiqué par Adil, 4.1.2 semble fonctionner. Moi-même, j'ai amélioré à 4.3.4 et cela a fonctionné très bien aussi.