Компиляция под Windows

Board index Программирование GoLand

Description: Программирование на языке Go

#1by mexan » 03.01.2025, 17:16

Чтобы скомпилировать программу на Go и избежать появления окна терминала при запуске .exe файла в Windows, можно воспользоваться следующим способом.

При компиляции Go программы можно указать флаг -ldflags для установки специального значения для параметра windows в -H. Это позволит создать Windows GUI приложение без консольного окна.

Команда для терминала:
Code: Select all
go build -ldflags="-H=windowsgui" -o ваше_имя_файла.exe ваш_файл.go

Пример:
Code: Select all
go build -ldflags="-H=windowsgui" -o myapp.exe main.go

  • go build - команда компилирует текущий Go-проект в исполняемый файл. Сборка производится на основе кода вашего проекта, файлов Go и зависимости из go.mod.
  • -ldflags - gараметр -ldflags позволяет передать дополнительные флаги компоновщику, которые влияют на процесс генерации выходного файла (программы). Эти флаги предоставляют дополнительные инструкции компоновщику, которые позволяют изменять поведение сборки (например, убирать консольное окно в GUI приложениях, изменять размер исполняемого бинарного файла и т.д.).
  • "-H=windowsgui" - флаг используется для сборки Windows-приложений, которые имеют графический пользовательский интерфейс (GUI), без консольного окна. По умолчанию, при запуске Go-программы на Windows, система открывает консольное окно, даже если оно не нужно вашему приложению.
  • -H=windowsgui - флаг говорит компоновщику, что программа должна быть графическим приложением. В результате:
    • Во время выполнения программы не отображается консольное окно.
    • Программа будет работать в "фоновом" режиме, ожидая взаимодействия через GUI.
    Этот флаг актуален только для ОС Windows.
  • -o myapp.exe - флаг -o используется для указания имени выходного исполняемого файла.
    Если не указать -o, то исполняемый файл будет называться так же, как директория проекта, или main.exe.
mexan
Администратор
Reputation: 0
Posts: 179
Topics: 138

Return to GoLand

cron