当前位置: 首页 > 工具软件 > gobuild > 使用案例 >

go build在mac系统下生成可执行文件时隐藏终端

阎啸
2023-12-01

背景:

最近在mac上用go写一个文件传输项目时,期待自动打开一个浏览器页面然后进行操作。然而直接使用go build生成可执行文件并执行后,在打开浏览器页面的同时,也会打开一个终端窗口(打印日志等信息),在浏览器关闭(主进程终止)的情况下终端还是开着,每次都需要手动关闭终端,很影响体验。

解决方法:

windows下

经查询,可以通过以下命令隐藏cmd窗口

go build -ldflags="-s -w -H windowsgui"

代码作用是:

  1. -s strip 去掉无用的符号
  2. -w DWARF 去掉DWARF调试信息,得到的可执行程序不可用调试器调试
  3. -H windowsgui 生成带GUI界面的程序时,可去掉dos黑框

可以减小可执行文件大小并隐藏窗口。

此外,如果想更加清楚的看到编译过程可加-x 参数,如bulid -x …

但此方法只适用于windows系统,在macOS上编译会提示

adddynlib: unsupported binary format

无法达到预期结果

macOS下

在windows下,控制台和窗口是分离的,它们有两个不同的入口(main 和 WinMain),但在macOS上,这两者都是相同的可执行文件。

上述终端窗口的出现是因为直接启动二进制文件而不是将其作为应用程序包打开,因此,考虑在编译时将其构建为应用程序包再打开。

比如我的app名字是zTrans,则命令如下

mkdir -p zTrans.app/Contents/MacOS
go build -o zTrans.app/Contents/MacOS/zTrans

执行完毕后使用Finder打开,可以看到目录下的zTrans.app,点击启动不会出现终端窗口,完美解决!

 类似资料: