Go语言的静态链接与动态链接


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"

于是,静态链接成功。

Go语言的静态链接与动态链接介绍到这里,更多Go学习请参考编程字典Go教程 和问答部分,谢谢大家对编程字典的支持。


原文链接:https://blog.csdn.net/yjf_victor/article/details/119961863?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163480011616780274138504%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=163480011616780274138504&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_v2~rank_v29-6-119961863.pc_v2_rank_blog_default&utm_term=go&spm=1018.2226.3001.4450