10
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Goで書いたUnityのネイティブプラグインをGo Mobileでビルドする #golang #unity

Last updated at Posted at 2016-05-12

はじめに

前回の記事では、iOSのビルドの際、ツールチェインの再ビルドをする必要があると書きましたが、Go Mobileのツールチェインを使えば必要ありません。

Go Mobileのインストール

Go Mobileについての詳細はこちらの記事を見て頂ければ良いと思いますが、インストールは非常に簡単です。
以下の2つのコマンドを走らせます。

$ go get -u golang.org/x/mobile/cmd/gomobile
$ gomobile init -v

もし、gomobile initに失敗した場合は、一度$GOPATH/pkg/gomobileディレクトリを削除して、再度実行してみて下さい。

インストールに成功したら、以下のようにモバイル用にビルドされたパッケージが入ってるか見てみて下さい。

$ ls -1 $GOPATH/pkg/gomobile/
android-ndk-r10e
dl
pkg_android_386
pkg_android_amd64
pkg_android_arm
pkg_android_arm64
pkg_darwin_amd64
pkg_darwin_arm
pkg_darwin_arm64
version

Android向けにビルドする

ビルドするコードは前回のものと同じです。
ビルドコマンドもほとんど同じですが、-pkgdirオプションを指定します。
このオプションを指定することで、Go Mobileによってインストールされているツールチェインを使ってビルドします。
arm-linux-androideabi-gcc$GOPATH/pkg/gomobile/android-ndk-r10e/arm/bin/以下にあるものを使いますので、PATHを通してください。

$ CGO_ENABLED=1 \
CC=arm-linux-androideabi-gcc \
GOOS=android \
GOARCH=arm \
GOARM=7 \
go build -buildmode=c-shared -pkgdir=$GOPATH/pkg/gomobile/pkg_android_arm -o libhoge.so hoge.go

iOS向けにビルドする

前回は、CC_FOR_TARGETCXX_FOR_TARGETmisc/ios/clangwrap.shで指定して、ツールチェインを再ビルドしたため、CCCXXなどをgo build時に指定しましせんでしたが、今回は指定します。

GOOS=darwin \
GOARCH=arm \
GOARM=7 \
CC=`xcrun --sdk iphoneos -f clang` \
CXX=`xcrun --sdk iphoneos -f clang` \
CGO_CFLAGS="-isysroot `xcrun --sdk iphoneos --show-sdk-path` -arch armv7 -miphoneos-version-min=6.1" \
CGO_LDFLAGS="-isysroot `xcrun --sdk iphoneos --show-sdk-path` -arch armv7 -miphoneos-version-min=6.1" \
CGO_ENABLED=1 \
go build -pkgdir=$GOPATH/pkg/gomobile/pkg_darwin_arm -buildmode=c-archive -tags=ios -o hoge.a hoge.go

おわりに

今回はGo Mobileのツールチェインを使ってUnityのネイティブプラグインをビルドする方法について紹介しました。
-pkgdirで指定するアーキテクチャも変えればarm64などもビルドできると思います。

10
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?