3

我想编译一个 c++ 文件。我正在关注一个教程,在本教程中,文件是用 Visual Studio 编译的,我没有。我想对 g++ 做同样的事情。在本教程中,使用 VS 中的 /GS 和 /SafeSEH。我想知道如何使用 g++ 编译器使用这些标志编译我的文件。

抱歉,如果我的问题很简单,我以前从未使用过 g++。对不起我的英语。谢谢你。

4

1 回答 1

2

所以首先要做的事情是:

  • /GS实际上执行“缓冲区安全检查”,试图自动检测缓冲区溢出并在此类溢出被利用之前终止您的应用程序。

  • /SAFESEH在可执行文件中嵌入所有结构化异常处理程序的列表,以便操作系统可以检测是否安装了未经授权的处理程序以试图劫持执行。

现在回答您的问题:g++ 实现了类似于 /GS 的功能。您可以编译您的代码-fstack-protector-all以启用它。如果您好奇,可以查看 gcc 手册页或使用 google 了解更多详细信息。g++ 没有实现结构化异常处理(它是 Microsoft 扩展),因此 g++ 中没有类似于 /SAFESEH 的东西。

好消息是,除非您正在处理的示例旨在演示 /GS 和 /SAFESEH 提供的额外保护,否则在没有它们的情况下编译代码根本不成问题。我敢打赌,您可以忽略这两个选项并在没有它们的情况下进行编译,一切都会好起来的。

如果您有兴趣获得 Visual Studio,您可以从 Microsoft 获得免费的“Express”版本。在这里查看网站:http: //www.microsoft.com/visualstudio/eng/products/visual-studio-express-products

我希望这有帮助。

于 2012-11-10T08:21:00.277 回答