Skip to content

Instantly share code, notes, and snippets.

@nobonobo
Created June 23, 2016 03:19
Show Gist options
  • Select an option

  • Save nobonobo/2284fe75eb18f4138a3663d270ac3e75 to your computer and use it in GitHub Desktop.

Select an option

Save nobonobo/2284fe75eb18f4138a3663d270ac3e75 to your computer and use it in GitHub Desktop.
golang muslスタティックリンク
sudo pacman -S musl
CC=/usr/bin/musl-gcc go build --ldflags '-linkmode external -extldflags "-static"' sample.go
ldd sample
動的実行ファイルではありません
@nobonobo
Copy link
Copy Markdown
Author

nobonobo commented Aug 1, 2016

dockerベースでビルドするときは以下のようにやってもビルドできるよ!(docker for linuxで確認)

docker pull golang:1.6-apline
docker run -it golang:1.6-alpine ash
> apk update && apk add gcc musl-dev
Ctrl+D
docker commit $(docker ps -aql) golang:1.6-alpine-with-gcc
docker run -it --rm -v $PWD:$PWD -w $PWD golang:1.6-alpine-with-gcc go build --ldflags '-linkmode external -extldflags "-static"' sample.go
file ./sample
./sample: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, not stripped

@nobonobo
Copy link
Copy Markdown
Author

nobonobo commented Aug 1, 2016

GOPATH環境変数の反映やOutputがrootオーナーなのはdocker runのオプションで調整してください。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment