c ++共享标志段错误

问题描述 投票:1回答:2

偶然地,我用一个hello world c ++程序链接了--shared标志,并得到了一个exe文件。但运行时输出为segfault。有人可以告诉我背后的原因吗?

复制方式:

eclipse c ++中的标准c ++ hello world问题。选中设置->共享库设置中的共享标志框。

构建输出:

全部制作构建文件:../ app.cpp调用:GCC C ++编译器g ++ -O0 -g3 -Wall -c -fmessage-length = 0 -fPIC -MMD -MP -MF“ app.d” -MT“ app.d” -o“ app.o”“ ../app.cpp”完成的建筑物:../ app.cpp

构建目标:应用调用:GCC C ++链接器g ++ -shared -o“ app” ./app.o完成的建筑目标:应用]

执行输出:分割错误

谢谢

c++ linker share
2个回答
6
投票

从g ++手册: - 共享产生一个共享对象,然后可以将其与其他对象链接以形成可执行文件。并非所有系统都支持此选项。为了获得可预测的结果,当您指定此选项时,还必须指定用于生成代码的相同选项集(-fpic,-fPIC或模型子选项)。[1]

[当您使用--shared选项时,表示您不需要可执行文件,而是共享对象。

根据您的情况,您创建的是共享库而不是可执行文件。这就是为什么在启动段时会出现段错误的原因。


0
投票

[娜娜娜娜娜娜蝙蝠侠!!!!!!!!

© www.soinside.com 2019 - 2024. All rights reserved.