Go语言在默认情况下是静态链接的:
但是,有一些库可能会导致动态链接:
这时候如果你确实需要静态链接,那么可以增加 -ldflags="-extldflags --static"
参数来进行静态链接,即这个命令:
go build -ldflags="-extldflags --static"
当然,还存在一些第三方库,因调用了一些 glibc 中不支持静态链接的函数,而导致无法静态链接:
对于这类情况,如果坚持一定要静态链接,那么可以弃用 glibc 库,改用 musl libc 库。
如果你使用的 *** 作系统是 Debian / Ubuntu ,那么可以运行如下命令安装 musl libc 库:
sudo apt-get install musl-dev musl-tools
然后使用 musl libc 库来静态链接,命令是:
CC=musl-gcc go build -tags musl -ldflags="-extldflags --static"
于是,静态链接成功。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)