golang静态编译 以及glibc相关

makefile 参考

1
2
3
4
5
.PHONY: buildandrun
BIN_FILE := $(shell basename $(CURDIR))
buildandrun:
		 go build -ldflags '-s -w -linkmode "external" -extldflags "-static"'  -o "${BIN_FILE}" ${BIN_FILE}.go
		#./"${BIN_FILE}"

其他相关命令

1
2
@CGO_ENABLED=1 go build -o "${BIN_FILE}" ${BIN_FILE}.go
ldd --version # 查看 glibc 版本ldd (Debian GLIBC 2.36-9) 2.36

在静态编译的时候可能会提示 cgo_unix_cgo.cgo2.c:58: 警告:Using 'getaddrinfo' in statically linked applications requires at runtime the shared libraries from the glibc version used for linkin
就是因为使用了 getaddrinfo函数。

静态链接应用程序时,依赖于 glibc 的其他功能可能会导致类似的警告。确保在进行任何更改之前,仔细检查应用程序的所有依赖,并确保它们与系统中提供的 glibc 版本兼容。

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计