• <menu id="oia2w"><acronym id="oia2w"></acronym></menu>
  • <menu id="oia2w"></menu>
  • <input id="oia2w"><u id="oia2w"></u></input>
  • <menu id="oia2w"></menu><input id="oia2w"></input>
  • 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.hz0j0r0vo.fun http://fa.hz0j0r1vo.fun http://fa.hz0j2r1vo.fun http://fa.hz0j1r3vo.fun http://fa.hz0j0r5vo.fun