LoginSignup
7
3

More than 5 years have passed since last update.

GoをWindows向けにビルドするときの注意点メモ

Posted at

社内に向けてWindowsのCLIツールをgolangで書いたりなどしているが、その際に困ったことなど。
今後もハマることがあれば追加して行きたい。

Windowsにtimezone.zipがないためtime.LoadLocationでerrorになる。

A1. time.LoadLocationFromTZDataを使う
A2. 4d63.com/tzを使う

Githubにこの件のissueが立っている
Windows環境の場合time.LoadLocation(s string)$GOROOT\lib\timezoneinfo.zipを参照するため、goをインストールしていない環境ではエラーとなる。パスは埋め込まれており変更できない。
time.LoadLocationFromTZDataはtimezoneの情報をバイト列で渡せるのでbindataとして埋め込んで渡せば解決する。timezoneのbindataも埋め込んでパッケージ化されているのが4d63.com/tzである

自身のパッケージ内ではそれでよいがgithub.com/go-sql-driver/mysqlなどはdns.goの中でtime.LoadLocationを読んでいたりする。
この場合はvendor配下(dep管理)を直接書き換えて対処している。

参考

ビルド全体についてはdtan4さんのGo でツール書くときの Makefile 晒すがとても参考になります。

7
3
1

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
7
3