意外地,我用-shared标志与hello world C++程序链接并获得了exe文件。但运行时输出是段错误。有人能告诉我背后的原因吗?C++共享标志段错误
的方式重现:在日食ç
标准C++的hello world问题++。 在设置 - >共享库设置中检查共享标志框。
构建输出:
使所有 建筑文件:../app.cpp 调用:GCC C++编译器 克++ -O0 -g3 -Wall -c -fmessage长度= 0 -fPIC -MMD - MP -MF “app.d” -MT “app.d” -o “app.o” “../app.cpp” 建好:../app.cpp
建设目标:应用程序调用 :GCC C++ Linker g ++ -shared -o“app”./app.o
完成建筑物目标:应用程序
执行输出: 分段故障
由于
您已构建共享库,而不是可执行文件。尝试执行共享库通常会导致分段错误。除非你想建立一个共享库,否则不要使用'-shared'。 –
你能告诉我为什么执行共享库会导致segFault?谢谢 – cppython
@cppython共享库不需要入口点(函数main),因此系统无法知道从代码开始执行的位置。此外,C运行时代码中的可执行链接调用main(),如果main()返回,则调用exit()。 –