safeseh gs на g++

Я хочу скомпилировать файл C++. Я следую учебному пособию, в этом учебном пособии файл скомпилирован с помощью Visual Studio, а у меня его нет. Я хочу сделать то же самое с g ++. В руководстве используйте /GS и /SafeSEH от VS. Я хочу знать, как компилировать мой файл с этими флагами с помощью компилятора g ++.

Извините, если мой вопрос прост, я никогда раньше не использовал g ++. И извините за мой английский. Спасибо.

1 ответ

Итак обо всем по порядку:

  • /GS фактически выполняет "проверки безопасности буфера", которые пытаются автоматически обнаружить переполнение буфера и завершить работу вашего приложения, прежде чем такие переполнения могут быть использованы.

  • /SAFESEH встраивает список всех структурированных обработчиков исключений в исполняемый файл, чтобы операционная система могла обнаружить, были ли установлены неавторизованные обработчики в попытке перехватить выполнение.

Теперь, чтобы ответить на ваш вопрос: g++ реализует функцию, аналогичную /GS. Вы можете скомпилировать свой код с -fstack-protector-all чтобы включить его. Если вам интересно, вы можете посмотреть на man-страницах gcc или использовать Google для более подробной информации. В g ++ не реализована структурированная обработка исключений (это расширение Microsoft), поэтому в g ++ нет ничего похожего на /SAFESEH.

Хорошей новостью является то, что если пример, над которым вы работаете, не предназначен для демонстрации дополнительной защиты, которую могут себе позволить / GS и /SAFESEH, то компиляция кода без них не должна быть проблемой вообще. Я был бы готов поспорить, что вы можете игнорировать эти два варианта и просто скомпилировать без них, и все будет хорошо.

Если вы заинтересованы в приобретении Visual Studio, вы можете получить бесплатные "Экспресс" версии от Microsoft. Проверьте веб-сайт, здесь: http://www.microsoft.com/visualstudio/eng/products/visual-studio-express-products

Надеюсь, это поможет.

Другие вопросы по тегам