c ++共享标志段错误

时间:2013-07-27 18:41:01

标签: c++ linker share

意外地,我用--shared标志与hello world c ++程序链接并获得了一个exe文件。但是当我运行它时输出是段错误的。有人可以告诉我背后的原因吗?

重现方式:

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

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

执行输出: 分段错误

谢谢

1 个答案:

答案 0 :(得分:5)

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

当您放置--shared选项时,这意味着您不需要可执行文件,而是需要共享对象。

在您的情况下,您创建共享库而不是可执行文件。这就是你在启动时发生段错误的原因。