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
Надеюсь, это поможет.