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 .

见:

comments powered by Disqus