英文:
Unable to run gomobile init or version on mac
问题
我是一个Go语言的新手。我正在尝试在MacOS Big Sur上安装gomobile进行评估,但无法通过init
步骤。
运行go version
返回go version go1.17.6 darwin/amd64
。
按照这些说明,gomobile
的安装似乎正常工作(在将gomobile
显式添加到我的PATH之后),但运行init
或version
失败。
gomobile: go install golang.org/x/mobile/cmd/gobind failed: exit status 1
go install: version is required when current directory is not in a module
Try 'go install golang.org/x/mobile/cmd/gobind@latest' to install the latest version
gomobile version unknown: cannot test gomobile binary: exit status 1, no required module provides package golang.org/x/mobile/cmd/gomobile: go.mod file not found in current directory or any parent directory; see 'go help modules'
我猜这与环境变量有关,但对于任何建议和/或帮助,我都会非常感激。
英文:
I am a go newbie. I am trying to install gomobile for evaluation on MacOS BigSur but can't get past the init
step.
running go version
returns go version go1.17.6 darwin/amd64
Following the directions, the gomobile
install appears to work properly (after explicitly adding gomobile
to my PATH), but running init
or version
fails.
gomobile: go install golang.org/x/mobile/cmd/gobind failed: exit status 1
go install: version is required when current directory is not in a module
Try 'go install golang.org/x/mobile/cmd/gobind@latest' to install the latest version
gomobile version unknown: cannot test gomobile binary: exit status 1, no required module provides package golang.org/x/mobile/cmd/gomobile: go.mod file not found in current directory or any parent directory; see 'go help modules'
I'm guessing this has something to do with environment variables but any suggestions and/or help would be appreciated.
答案1
得分: 5
我确实设法最终设置好了gomobile
,但这个过程非常痛苦,官方的“实验性”文档不完整,也没有什么帮助。以下是在MacOS(BigSur)上适用于我的步骤:
按照网站上的步骤安装GO
安装gomobile
go install golang.org/x/mobile/cmd/gomobile@latest
安装Xcode命令行工具。如果已安装但找不到,可能需要运行以下命令:
xcode-select -r
安装Android NDK。可以通过Android Studio的Tools->SDK Manager来完成。需要确保安装的版本受到gomobile支持,因为gomobile不支持最新版本的NDK。
更新shell以包含以下导出项:
export PATH=$PATH:/Users/mikem/go/bin
export ANDROID_HOME=/Users/mikem/Library/Android/sdk
export ANDROID_NDK_HOME=/Users/mikem/Library/Android/sdk/ndk/23.1.7779620
创建一个工作目录
mkdir myworkdir
创建一个模块目录
mkdir mymodule
cd mymodule
在该模块目录中创建一个.go
文件,并给它一些内容。注意,包名应与模块名不同,否则绑定可能会抱怨找不到任何内容
package mymodulelib
import "fmt"
func SayHello() {
fmt.Println("Hello from mymodule")
}
从工作目录中初始化模块
go mod init mymodule
安装gobind - 它会抱怨你应该使用go install
方法而不是go get
(已弃用),但是go install
对我来说不起作用
go get golang.org/x/mobile/cmd/gobind
返回到模块目录,初始化并生成iOS和Android代码
cd mymodule
gomobile init
gomobile bind -target ios
gomobile bind -target android
英文:
I did manage to finally get gomobile
set up, but the process was painful and the official "experimental" documentation was incomplete and not at all helpful. Here's the steps that worked for me on MacOS (BigSur):
Follow steps to install GO from website
Install gomobile
go install golang.org/x/mobile/cmd/gomobile@latest
Install Xcode command line tools. If installed but not found, you may need to run the following:
xcode-select -r
Install Android NDK. This can be done via Android Studio’s Tools->SDK Manager. Need to ensure that the installed version is supported by gomobile since the latest version of the NDK is NOT supported by gomobile.
Update shell to include the following exports:
export PATH=$PATH:/Users/mikem/go/bin
export ANDROID_HOME=/Users/mikem/Library/Android/sdk
export ANDROID_NDK_HOME=/Users/mikem/Library/Android/sdk/ndk/23.1.7779620
Create a working directory
mkdir myworkdir
Create a module directory
mkdir mymodule
cd mymodule
Create a .go
file in that module directory and give it some content. Note that the package name should be different than the module name or the bind may complain that it can't find anything
package mymodulelib
import "fmt"
func SayHello() {
fmt.Println("Hello from mymodule")
}
From the work directory, initialize the module
go mod init mymodule
Install gobind - it will complain that you should be using the go install
method instead of the go get
(deprecated) but the go install
does not work (at least for me)
go get golang.org/x/mobile/cmd/gobind
Go back into the module directory, initialize and then generate iOS and android code
cd mymodule
gomobile init
gomobile bind -target ios
gomobile bind -target android
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论