2010-02-08 40 views
0

我試圖用g ++ 4.0.1創建一個lib,但它尋找_main(故意不在代碼中)。我必須把_main放在那裏,還是我可以繞過一些漂亮的開關?我現在命令行的樣子:使用g ++ 4.0.1創建lib

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

在阿里納斯我用G ++ PowerPC的蘋果darwin9,但我猜/希望,這應該是不相關的。更完整的打印輸出:

 
$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

雖然g ++版本是4.1.2,但我沒有收到任何錯誤。請發佈錯誤消息以及如何編譯源文件。 – Adil 2010-02-08 13:56:42

+0

我貼了'他們,但不知道它會幫助。我試過除了-shared和-o開關之外的所有東西,但沒有成功。我想知道爲什麼g ++需要我的共享庫的入口點。你知道它可能需要的原因嗎?在4.0.1中的錯誤? 「DLL入口」? – 2010-02-08 14:04:59

+0

不確定是什麼問題,但檢查鏈接: http://forums.codeblocks.org/index.php/topic,9934.0 http://discussions.apple.com/thread.jspa?messageID=9703700 – Adil 2010-02-09 06:44:47

回答

1

解決方案是升級編譯器。正如Adil所說,4.1.2似乎工作。我自己,我升級到4.3.4,這也很好。