質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

Q&A

解決済

2回答

2694閲覧

M1 macでgoのセットアップがうまくいきません。

josui.likewater

総合スコア1

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

0グッド

0クリップ

投稿2021/10/05 06:19

前提・実現したいこと

M1チップのMacでgoの開発環境を整えたいですのですが、

正規のパッケージをインストールしたのですが、エラーがでてしまい試しに作ったmain.goをrunすることもできません。

発生している問題・エラーメッセージ

出ているメッセージとしては以下の通りです。

go tool: no such tool "compile"

該当のソースコード

main.go自体も以下の通り非常に簡単なものです。

ソースコード

package main

import "fmt"

func main() {
fmt.Println("Hello, World!")
}

試したこと

PATHの設定などは.zshrcにてすでに行ってあります。
export PATH="$GOROOT/bin/$PATH"
export PATH="$PATH:$GOPATH/bin"

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

M1-macなら、HomebrewのGoパッケージをインストールするのが簡単でしょう。

$ brew info go
go: stable 1.17.1 (bottled), HEAD
Open source programming language to build simple/reliable/efficient software
https://golang.org

$ brew install go

$ go version
go version go1.17.1 darwin/arm64

$ go run test.go
Hello World

投稿2021/10/05 11:42

technocore

総合スコア7247

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

通常、GOROOT環境変数を設定する必要はありませんので外してみてください。

追記1

以下のコマンドで得られる出力を貼ってください(個人のユーザー名などを伏せてもらっても構いません)

/usr/local/go/bin/go env ・・・出力・・・

追記2

M1-macでは、GOARCHやGOHOSTARCHがarm64になっている必要があります。

goenvはGoモジュールで開発する場合にメリットはもうありません。使わないことをお勧めします。
以下の方法で任意のバージョンのGoをインストールし利用することができ、どのバージョンのGoを使ってもgo.modで指定したバージョンにスイッチするのでGoのバージョン別にGOPATHを分ける必要もないです。
そしてその方がエディタ連携もしっかり機能します(goenv利用の場合にエディタ連携をうまく動かすのはかなりナイーブな設定を書く必要があります)

go install golang.org/dl/go1.15.8@latest go1.15.8 download go1.15.8 version go version go1.15.8 darwin/amd64

投稿2021/10/05 07:05

編集2021/10/05 10:32
nobonobo

総合スコア3367

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

josui.likewater

2021/10/05 09:44

ありがとうございます! 外してみたのですが、変わらずでした…
nobonobo

2021/10/05 09:57

状況確認方法を追記しました!
josui.likewater

2021/10/05 10:01

GO111MODULE="on" GOARCH="amd64" GOBIN="" GOCACHE=“/Users/(ユーザー名)/Library/Caches/go-build” GOENV="/Users/(ユーザー名)/Library/Application Support/go/env" GOEXE="" GOEXPERIMENT="" GOFLAGS="" GOHOSTARCH="amd64" GOHOSTOS="darwin" GOINSECURE="" GOMODCACHE="/Users/(ユーザー名)/go/1.17.1/pkg/mod" GONOPROXY="" GONOSUMDB="" GOOS="darwin" GOPATH="/Users/(ユーザー名)/go/1.17.1" GOPRIVATE="" GOPROXY="https://proxy.golang.org,direct" GOROOT="/Users/(ユーザー名)/.goenv/versions/1.17.1" GOSUMDB="sum.golang.org" GOTMPDIR="" GOTOOLDIR="/Users/(ユーザー名)/.goenv/versions/1.17.1/pkg/tool/darwin_amd64" GOVCS="" GOVERSION="go1.17.1" GCCGO="gccgo" AR="ar" CC="clang" CXX="clang++" CGO_ENABLED="1" GOMOD="/dev/null" CGO_CFLAGS="-g -O2" CGO_CPPFLAGS="" CGO_CXXFLAGS="-g -O2" CGO_FFLAGS="-g -O2" CGO_LDFLAGS="-g -O2" PKG_CONFIG="pkg-config" GOGCCFLAGS="-fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/t8/3631y2pn6llchyhj2vnty_lr0000gn/T/go-build3937803969=/tmp/go-build -gno-record-gcc-switches -fno-common" この通りです! ご丁寧にありがとうございます!!!
nobonobo

2021/10/05 10:21 編集

GOARCH="amd64" GOHOSTARCH="amd64" になっていて、M1-macの場合ここがarm64になっている必要がありそうです。 また、goenvはこの手のトラブルをややこしくしがちなのであまりお勧めはしません。 golang.org/dlにて「go1.17.1.darwin-arm64.pkg」を選んでインストールしましょう。
josui.likewater

2021/10/06 00:33 編集

ありがとうございます!無事、解決しました!!!! ちなみになのですが、パッケージからダウンロードした上で、プロジェクトを作り、go.modを用いてローカルのファイルをインポートしようとすると invalid go version '1.17go': must match format 1.23 このようなエラーが出てくるのですが、これについてもどう解決すべきかご存知だったりしますでしょうか…? ちなみにgo mod tidyなどはやってみましたがだめでした。
nobonobo

2021/10/06 00:33

状況が分かりにくいので別の質問にしてもらうと良いかもしれません。
josui.likewater

2021/10/06 00:55

お返事ありがとうございます! いただいた記事を参照しながら、go mod init モジュール名をやり直したところ解消しました! ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問