【发布时间】:2020-12-22 20:31:47
【问题描述】:
我正在尝试在 Mac 应用程序中发布 golang 二进制文件。理想情况下,它只是一个对文件夹和文件具有一些基本功能的 HTTP 服务器。
当我从终端运行二进制文件时,它似乎工作得很好,但是当我尝试从我的 Mac 应用程序中以编程方式调用它时,它给我一个错误“不允许操作”并退出。
使用有效的身份文件进行代码签名后,我得到了同样的错误。
错误:
go build -ldflags -s .
codesign -s "Developer ID Application: *** *tesco" binaryFile
Golang 环境:
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/srinivas/go"
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
GCCGO="gccgo"
CC="clang"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/3n/vpg5bnks45n75n
d91qh7sy3c0000gn/T/go-build925744934=/tmp/go-build -gno-record-gcc-switches -fno-common"
CXX="clang++"
CGO_ENABLED="1"
PKG_CONFIG="pkg-config"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
【问题讨论】:
-
appears 有很多原因,实际上与 Go 无关。你有进一步调查吗?我的意思是,错误信息太笼统了。
-
这可能与 Go 无关。我猜从 OS X El Capitan 开始,许多资源(主要是文件和文件夹)都受到系统完整性保护 (SIP) 的保护,免受恶意活动的影响。看mikesel.info/fix-operation-not-permitted-root-os-x-terminal和serverfault.com/questions/748838/…
-
是的,我确实浏览了很多苹果和 golang 问题和论坛以了解更多信息,但没有谈到如何发布二进制文件或在 mac 应用程序中。
标签: ios macos go macos-high-sierra