#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
материал, если вообще что-либо, сбивает с толку и, по-видимому, не имеет отношения к этому вопросу.