为较旧的Mac OS版本构建golang应用程序的正确方法是什么?

问题描述

我正在构建一个go应​​用,该应用在Mac OS Catalina上也使用cgo,并且希望二进制文件能够在Mac OS的早期版本上运行。

执行此操作的正确方法是什么,它在哪里记录。 我很难找到有关如何执行此操作的信息。

到目前为止,我尝试过:

  • 寻求帮助

  • 获得帮助c

  • 转到doc cmd / cgo

  • man clang

  • 搜索我的问题的各种排列

  • 使用

    构建

    CGO_CFLAGS =“-mmacosx-version-min = 10.12” CGO_LDFLAGS =“-mmacosx-version-min = 10.12”去构建-o myapp

这产生

otool -l myapp | grep -A3 MIN
      cmd LC_VERSION_MIN_MACOSX
  cmdsize 16
  version 10.12
      sdk 10.15.6

最终试图在Mojave上运行时会抱怨

该应用程序需要macOS 10.15或更高版本

解决方法

在没有正确答案的情况下,这就是我最终得到的结果:

CGO_CFLAGS="-mmacosx-version-min=10.12" CGO_LDFLAGS="-mmacosx-version-min=10.12" go build -o myapp

这确实可以在Mac 10.14上运行。

otool -l

东西(如果有的话)会使事情变得混乱,并且在这方面显然没有任何意义。