Go 的程序编译完成后, 最终都是单个可执行文件? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
sun1991
V2EX    Go 编程语言

Go 的程序编译完成后, 最终都是单个可执行文件?

  •  
  •   sun1991 2018-01-12 09:57:56 +08:00 6195 次点击
    这是一个创建于 2909 天前的主题,其中的信息可能已经有所发展或是发生改变。

    即所有的依赖都会被编译到单个可执行文件中去, 没有 DLL 之类的外部依赖?

    44 条回复    2018-01-24 20:23:23 +08:00
    Immortal
        1
    Immortal  
       2018-01-12 10:01:48 +08:00
    没有
    如果想要,连 web 的那些图片资源,静态页都可以给你打包进去
    xvsfezz
        2
    xvsfezz  
       2018-01-12 10:10:05 +08:00
    go 就是为了解决 c++那些复杂的依赖而来的
    we000
        3
    we000  
       2018-01-12 10:13:31 +08:00   1
    ```
    go build -buildmode=shared -linkshared pkg_name
    go build -linkshared main.go
    ```

    1.5 版开始就可以动态链接了, 如果一定要这样的话...
    bramblex
        4
    bramblex  
       2018-01-12 10:15:24 +08:00
    @xvsfezz

    go 和 c 艹不在同一个层次好不, 有什么可以比较的?
    88250
        5
    88250  
       2018-01-12 10:16:31 +08:00   1
    > go 就是为了解决 c++那些复杂的依赖而来的

    然后把 Java 干翻了。
    willchen
        6
    willchen  
       2018-01-12 10:18:54 +08:00   1
    支持动态链接库 so 文件
    amaranthf
        7
    amaranthf  
       2018-01-12 10:44:31 +08:00
    @bramblex 差不多还是在同一个层次的,都是编译型、静态类型的,也就是多个 runtime 而已。
    gamexg
        8
    gamexg  
       2018-01-12 10:52:06 +08:00
    是啊,
    而且不需要配置就可以交叉编译,直接一次性编译出来 windows、linux、android 下的代码。
    darrh00
        9
    darrh00  
       2018-01-12 10:59:06 +08:00
    看是不是用 cgo,用了就不一定了。
    bramblex
        10
    bramblex  
       2018-01-12 11:00:20 +08:00
    @amaranthf

    还真不是同一个层次的, 要说同一个层次的好歹拿 rust 出来啊.

    以及真不喜欢 go 这个半残疾的语言.
    mengzhuo
        11
    mengzhuo  
       2018-01-12 11:12:23 +08:00
    是的

    谁再敢在生产环境给我整动态链接库的我整死谁
    amaranthf
        12
    amaranthf  
       2018-01-12 11:23:43 +08:00
    @bramblex 看层次怎么定义了,反正在我看来所有直接编译成 native 代码的东西都是同一个层次的。
    我觉得 go 还是蛮好用的,用这东西写代码,最初你会觉得憋屈,但是憋屈惯了就会发现这东西的开发效率是真高,比 C++高一百倍,工程规模上去之后比 python 也不弱。
    wowowo1
        13
    wowowo1  
       2018-01-12 11:26:35 +08:00
    楼上真是为了黑而黑的黑。
    wowowo1
        14
    wowowo1  
       2018-01-12 11:34:44 +08:00
    不纯粹。

    看编译方式和喜好了,

    只看编译方式:

    即便只是纯 go,编译方式不一样,( CGO 有没有打开),有些还是会调用本地的 so 文件,有些还调用 libc。

    但是说到喜好:

    有些直接把静态文件搞进代码。https://github.com/jteeuwen/go-bindata,编译出来还是一个独立的二进制文件。
    有些直接把一坨 c 源码搞进代码。https://github.com/mattn/go-sqlite3,编译出来还是一个独立的二进制文件。
    有些就要第三方 so 了,https://github.com/qiniu/iconv。


    对楼上有些人:&还是 '鬼画符语言适合你。
    bramblex
        15
    bramblex  
       2018-01-12 11:45:15 +08:00   1
    @amaranthf

    比 c 艹开发效率高 100 倍的东西多了去了...
    我说的是不同的使用场景, 而不是去单单是写写后端这一个领域.
    如果你说就写写后端来说, go 开发效率高当然没问题, php 开发 web 效率也高啊.
    说 go 半残疾是指 go 更多一个 dsl , 而不是一个现代通用编程语言, 跟 php 一个道理.

    所以我不喜欢 go.
    bramblex
        16
    bramblex  
       2018-01-12 11:49:56 +08:00
    已 block 楼上那种不懂乱喷的.

    鬼画符?
    物理数学那么多符号还不都是鬼画符?
    你随便开一个算法的讲解难道不是一堆鬼画符?
    你随便打开一个计算机相关领域的论文难道不全都是鬼画符?

    不懂没问题, 不要瞎比比.
    不然我会觉得 goer 都沦落到 phper 水平了.
    ZddPub
        17
    ZddPub  
       2018-01-12 11:58:47 +08:00
    @bramblex #16 沦为???你这个素质也高不到哪里去
    ZddPub
        18
    ZddPub  
       2018-01-12 12:00:04 +08:00
    @algery #17 哦。。是沦落。。那素质更差了
    xwhxbg
        19
    xwhxbg  
       2018-01-12 12:09:18 +08:00
    @bramblex 现代通用编程语言,是啥意思,求科普
    6ufq0VLZn0DDkL80
        20
    6ufq0VLZn0DDkL80  
       2018-01-12 12:10:45 +08:00 via Android
    看眼 go build 的帮助就知道了
    itplanes01
        21
    itplanes01  
       2018-01-12 12:22:21 +08:00 via Android
    @bramblex go 开发者的称呼貌似不是 goer,所以,所以了。
    itplanes01
        22
    itplanes01  
       2018-01-12 12:24:45 +08:00 via Android
    @bramblex 而且 goer 的英语意思有骂人的语义。
    doubleflower
        23
    doubleflower  
       2018-01-12 12:46:15 +08:00 via Android
    go 用 8 宽 tab 缩进你们能忍?
    chai2010
        24
    chai2010  
       2018-01-12 13:01:58 +08:00
    用纯 Go 的一般是单个文件,但是也可能动态链接( netdns 部分)。用 cgo 的一般会有外部依赖,但是也可以静态链接 gcc 的运行时。
    Mitt
        25
    Mitt  
       2018-01-12 13:02:48 +08:00
    @bramblex 说 go 就说 go 干嘛要黑我们 phper 你再这样说我可要争论一下世界上最好的语言了
    male110
        26
    male110  
       2018-01-12 13:13:39 +08:00
    没有
    neoblackcap
        27
    neoblackcap  
       2018-01-12 13:16:30 +08:00
    @xwhxbg 大概就是应用了现代 PL 理论成果的语言吧,比如有更强大的类型系统。说真的,我觉得 golang 的类型系统真聊胜于无。写类似泛型的代码那是一个痛苦,各种 interface {}。golang 作为一门语言,我觉得他更适合于分布式系统的领域。毕竟有一套比较好的基础,goroutine 什么的。一般性能要求不是特别高的,用 golang 写玩爆其他的,开发速度快,运行速度也过得去。还有就是跨平台简单的应用开发。

    @doubleflower 这个应该不是规定的吧,tab 没有规定是 8 个空格宽啊,你可以自行设定为 4 个甚至 2 个空格宽,记得只是缩进用 tab 吧
    missdeer
        28
    missdeer  
       2018-01-12 13:19:13 +08:00
    不一定,有些情况下可以有动态链接的
    bobuick
        29
    bobuick  
       2018-01-12 13:25:45 +08:00
    动态链接是后面加的功能了,如果不去特地使用。都是静态的,只有一个二进制文件,真的一处编译,四处运行哦
    mooncakejs
        30
    mooncakejs  
       2018-01-12 13:40:39 +08:00
    @bramblex 作为曾经的 phper,php 真轮不到你鄙视,trait interface,class,现代语言里有的,php 少了哪个?
    TheCure
        31
    TheCure  
       2018-01-12 13:56:30 +08:00
    @Immortal 咋搞进去啊
    wowowo1
        32
    wowowo1  
       2018-01-12 13:56:31 +08:00
    反回去 block。

    某些鬼画符语言的拥趸的爱好就是喷 go,然后看到 go 的新帖子,或者 go 帖子有新回复,立刻进来再喷一遍 go。

    鬼画符语言的碰瓷系营销天下第一。

    ![]( )
    wowowo1
        33
    wowowo1  
       2018-01-12 13:57:38 +08:00
    @algery 直接屏蔽得了,他们这门语言就喜欢碰瓷系营销。
    wowowo1
        34
    wowowo1  
       2018-01-12 14:03:51 +08:00
    搞不明白了,

    一个以改良 C++为目标的语言拥趸们天天来喷一个以改良 C 为目标的语言,结果还是干不过这门语言,服了。

    除了让人更反感之外,到底有什么意思?

    精神胜利?
    QAPTEAWH
        35
    QAPTEAWH  
       2018-01-12 15:38:26 +08:00
    路过求个图,各种编程语言图示。其中 C 是一颗子弹,golang 是三颗子弹。
    amaranthf
        36
    amaranthf  
       2018-01-12 18:27:44 +08:00
    @bramblex 大而全的东西总有自己的缺点,C 和 C++很通用了吧,前者构建大型工程的能力堪忧,后者的开发效率或者说对开发人员的水平要求是个硬伤,rust 更不用说了,学习阶梯感觉比 C++还要陡峭,可读性也是个问题。Java 在刚刚这些方面要好一些,但是整体来说就是一个“中庸”。而反观其他一些 specific 的领域,go 在后端以及不需要图形界面的中小型应用方面、python 在不关注执行效率的时候,js 在……在特么各种领域,也都混得风生水起。
    wizardforcel
        37
    wizardforcel  
       2018-01-12 19:54:24 +08:00
    @bramblex C++ 的 ABI 一团糟,这点真不如 Golang。一个二进制处理方式的问题居然能扯到语言特性上。那 C++ 模板这种负生产力,去工业化的设计是不是该拿来黑一黑?
    dobelee
        38
    dobelee  
       2018-01-12 20:02:34 +08:00
    原来是黑 php 的帖子。
    rwdy2008
        39
    rwdy2008  
       2018-01-12 20:03:40 +08:00
    工作团队需要什么语言,我就学习并使用什么语言,技多不压身。
    所以,你们在互相鄙视争论什么
    assad
        40
    assad  
       2018-01-12 20:15:28 +08:00 via Android
    @bramblex 哈哈。这个梗都能扯上 php !!
    bramblex
        41
    bramblex  
       2018-01-12 20:44:21 +08:00 via iPhone
    anewg
        42
    anewg  
       2018-01-13 08:53:55 +08:00
    @bramblex 求推荐些非残疾语言
    PythonAnswer
        43
    PythonAnswer  
       2018-01-13 13:12:41 +08:00 via Android
    @itplanes01 哈哈你是说 goer 内心是爱 php 的 不然非叫啥 gopher 插点 ph 进去
    Keyes
        44
    Keyes  
       2018-01-24 20:23:23 +08:00 via Android
    @rwdy2008 明白人
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1174 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 54ms UTC 17:46 PVG 01:46 LAX 09:46 JFK 12:46
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86