• golang静态编译

    golang 的编译(不涉及 cgo 编译的前提下)默认使用了静态编译,不依赖任何动态链接库。

    这样可以任意部署到各种运行环境,不用担心依赖库的版本问题。只是体积大一点而已,存储时占用了一点磁盘,运行时,多占用了一点内存。早期动态链接库的产生,是因为早期的系统的内存资源十分宝贵,由于内存紧张的问题在早期的系统中显得更加突出,因此人们首先想到的是要解决内存使用效率不高这一问题,于是便提出了动态装入的思想。也就产生了动态链接库。在现在的计算机里,操作系统的硬盘内存更大了,尤其是服务器,32G、64G 的内存都是最基本的。可以不用为了节省几百 KB 或者1M,几 M 的内存而大大费周折了。而 golang 就采用这种做法,可以避免各种 so 动态链接库依赖的问题,这点是非常值得称赞的。

    显示指定静态编译方法

    在Docker化的今天, 我们经常需要静态编译一个Go程序,以便方便放在Docker容器中。 即使你没有引用其它的第三方包,只是在程序中使用了标准库net,你也会发现你编译后的程序依赖glic,这时候你需要glibc-static库,并且静态连接。

    不同的Go版本下静态编译方式还有点不同,在go 1.10下, 下面的方式会尽可能做到静态编译:

        CGO_ENABLED=0 go build -a -ldflags -extldflags "-static" .

     

    参考:

    1. golang语言编译的二进制可执行文件为什么比 C 语言大

    2. 完全静态编译一个Go程序

    相关文章
    相关标签/搜索
    每日一句
      每一个你不满意的现在,都有一个你没有努力的曾经。
    公众号推荐
       一个历史类的公众号,欢迎关注
    一两拨千金
    天空彩天下彩正版资料 西吉县| 韶山市| 吉安县| 福州市| 揭西县| 湘潭市| 高陵县| 米脂县| 郧西县| 专栏| 若羌县| 红安县| 漯河市| 胶南市| 简阳市| 普定县| 怀化市| 池州市| 抚顺县| 龙胜| 茌平县| 杭锦后旗| 抚顺县| 苍南县| 南和县| 永州市| 宜春市| 宜昌市| 临泉县| 孝感市| 龙南县| 通江县| 永定县| 瑞昌市| 安义县| 尼勒克县| 湛江市| http://fa.hz0j0r9vo.fun http://fa.hz0j0r0vo.fun http://fa.hz0j1r5vo.fun http://fa.hz0j2r6vo.fun http://fa.hz0j1r6vo.fun