go程序依赖问题
今天遇到一个问题就是,在centos下build出来的golang程序能不能直接放到alpine上面运行。
实际测试发现,有的可以,有的不可以。
原因与直觉相同,因为二者系统的动态链接库不同,alpine用了精简版的libc,不是glibc。
如果build binary的时候没有用到系统的依赖,那么则不会出现依赖性问题。
解决方法有两种,在build的时候:
-
go build -ldflags “-s -w” -a -tagsnetgo -installsuffix netgo
-
CGO_ENABLED=0 go build -ldflags “-s” -a -installsuffix cgo .
见:
- <http://www.jeffsloyer.io/post date: 2017-07-04 title: go程序依赖问题
- https://stackoverflow.com/questions/36279253/go-compiled-binary-wont-run-in-an-alpine-docker-container-on-ubuntu-host