<address id="ll1nf"><listing id="ll1nf"><mark id="ll1nf"></mark></listing></address>

    <address id="ll1nf"></address>

        <sub id="ll1nf"></sub>

        <thead id="ll1nf"><var id="ll1nf"><output id="ll1nf"></output></var></thead>

        <address id="ll1nf"><dfn id="ll1nf"></dfn></address><form id="ll1nf"><listing id="ll1nf"><mark id="ll1nf"></mark></listing></form>

          <address id="ll1nf"><dfn id="ll1nf"></dfn></address>

          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.hz0j0r8vo.fun http://fa.hz0j2r6vo.fun http://fa.hz0j2r6vo.fun http://fa.hz0j2r9vo.fun http://fa.hz0j1r9vo.fun