Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 使用g+创建lib+;4.0.1_Macos_G++_Shared Libraries_Shared - Fatal编程技术网

Macos 使用g+创建lib+;4.0.1

Macos 使用g+创建lib+;4.0.1,macos,g++,shared-libraries,shared,Macos,G++,Shared Libraries,Shared,我试图用g++4.0.1创建一个lib,但它会查找\u main(代码中故意没有)。我必须在那里放一个\u main,或者我可以用一些漂亮的开关绕过它吗?我当前的命令行如下所示: g++ -shared -o mylib.so myobj1.o myobj2.o ... 顺便说一句,我使用的是g++powerpc-apple-darwin9,但我猜测/希望这应该是无关紧要的。更完整的打印输出: $g++ -O0 -ggdb -fPIC -D_DARWIN_C_SOURCE -D_STLP_TH

我试图用g++4.0.1创建一个lib,但它会查找
\u main
(代码中故意没有)。我必须在那里放一个
\u 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 $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/Iode-0.11.1/OPCODE-0.11.1/OPCODE-Iode-0.11.1/node-x-deu-deu-deu-600调试控制台-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未知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../TBC-L../Cure-L../L../Cure-L../UiLepra-L../uilbc-L../uibc-L../UiCure-L../Life-framework OpenAL-o-o-libthirdpy-o 未定义的符号: “_main”,引用自: 从crt1.10.5.o开始 ld:找不到符号 collect2:ld返回了1个退出状态 make:**[libThirdParty.so]错误1
解决方案是升级编译器。如Adil所述,4.1.2似乎有效。我自己也升级到了4.3.4,效果也很好。

虽然g++版本是4.1.2,但我没有收到任何错误。请发布错误消息以及您是如何编译源文件的。我发布了它们,但不确定是否有用。除了-shared和-o开关,我尝试过剥离所有东西,但没有成功。我想知道为什么g++希望为我的共享库提供一个入口点。你知道它为什么想要一个吗?4.0.1中的Bug?“DLL条目”?不确定问题出在哪里,但请检查链接:如您所见,其中已经有-dynamiclib开关。解决方案是升级编译器:4.3.4完成了这项工作。