<input id="wk422"><u id="wk422"></u></input>
  • <menu id="wk422"><tt id="wk422"></tt></menu><input id="wk422"></input>
    <object id="wk422"></object><input id="wk422"><acronym id="wk422"></acronym></input>
  • <nav id="wk422"></nav>
  • <input id="wk422"><acronym id="wk422"></acronym></input>
  • <object id="wk422"></object>
    <input id="wk422"><u id="wk422"></u></input><input id="wk422"></input>
  • <input id="wk422"><button id="wk422"></button></input>
  • <menu id="wk422"></menu>

    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.hz0j2r2vo.fun http://fa.hz0j0r6vo.fun http://fa.hz0j2r1vo.fun http://fa.hz0j0r8vo.fun http://fa.hz0j1r5vo.fun