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 · 5607 次点击
    这是一个创建于 2503 天前的主题,其中的信息可能已经有所发展或是发生改变。

    即所有的依赖都会被编译到单个可执行文件中去, 没有 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 水平了.
    algery
        17
    algery  
       2018-01-12 11:58:47 +08:00
    @bramblex #16 沦为???你这个素质也高不到哪里去
    algery
        18
    algery  
       2018-01-12 12:00:04 +08:00
    @algery #17 哦。。是沦落。。那素质更差了
    xwhxbg
        19
    xwhxbg  
       2018-01-12 12:09:18 +08:00
    @bramblex 现代通用编程语言,是啥意思,求科普
    cholerae
        20
    cholerae  
       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   ·   实用小工具   ·   5128 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 01:14 · PVG 09:14 · LAX 17:14 · JFK 20:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.