Как правильно создать приложение golang для более старой версии Mac OS?

#macos #go #build #cgo

#macos #Вперед #сборка #cgo

Вопрос:

Я создаю приложение go, которое также использует cgo в Mac OS Catalina, и хотел бы, чтобы двоичные файлы могли запускаться в предыдущих версиях Mac OS.

Как правильно это сделать и где это задокументировано. Мне трудно найти информацию о том, как это сделать.

До сих пор я пытался:

  • перейдите в раздел help build

  • перейдите в help c

  • перейдите в документ cmd /cgo

  • man clang

  • поиск в Google различных вариантов моего вопроса

  • сборка с помощью

    CGO_CFLAGS=»-mmacosx-version-min=10.12″ CGO_LDFLAGS=»-mmacosx-version-min=10.12″ перейти к сборке 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 или более поздняя версия

Комментарии:

1. Что вы пробовали и что именно не получилось?

2. Обновите мой пост.

3. Вы пробовали with-macosx-sdk=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14. sdk Возможно, вам потребуется собрать старые файлы SDK из предыдущих версий macOS с помощью XCode.

4. Какую версию Go вы используете?

5. Последней версией Go для поддержки macOS 10.10 был Go 1.12: golang.org/doc/go1.12#darwin

Ответ №1:

В отсутствие правильного ответа это то, с чем я закончил:

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

Это делает трюк для запуска на Mac 10.14.
The

otool -l

материал, если вообще что-либо, сбивает с толку и, по-видимому, не имеет отношения к этому вопросу.