代码之家  ›  专栏  ›  技术社区  ›  Jonas Byström

用G++4.0.1创建lib

  •  0
  • Jonas Byström  · 技术社区  · 15 年前

    我试图用G++4.0.1创建一个lib,但它寻找 _main (故意不在代码中)。我必须放一个 _主 在那里,或者我可以用一些漂亮的开关来规避吗?我当前的命令行如下:

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

    顺便说一句,我正在使用g++powerpc-apple-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
    
    1 回复  |  直到 15 年前
        1
  •  1
  •   Jonas Byström    15 年前

    解决方案是升级编译器。如ADIL所述,4.1.2似乎有效。我自己升级到了4.3.4版本,效果也很好。