The Go Programming Language
› http://golang.org/
› Go Playground
Go Projects
› Revel Web Framework
sun1991

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

  •  
  •   sun1991 · Jan 12, 2018 · 6952 views
    This topic created in 3222 days ago, the information mentioned may be changed or developed.

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

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

    1.5 版开始就可以动态链接了, 如果一定要这样的话...
    bramblex
    bramblex
    Jan 12, 2018
    4
    @xvsfezz

    go 和 c 艹不在同一个层次好不, 有什么可以比较的?
    88250
    88250
    Jan 12, 2018❤️1
    5
    > go 就是为了解决 c++那些复杂的依赖而来的

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

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

    以及真不喜欢 go 这个半残疾的语言.
    mengzhuo
    mengzhuo
    Jan 12, 2018
    11
    是的

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

    看编译方式和喜好了,

    只看编译方式:

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

    但是说到喜好:

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


    对楼上有些人:&还是 '鬼画符语言适合你。
    bramblex
    bramblex
    Jan 12, 2018❤️1
    15
    @amaranthf

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

    所以我不喜欢 go.
    bramblex
    bramblex
    Jan 12, 2018
    16
    已 block 楼上那种不懂乱喷的.

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

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

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

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

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

    ![]( )
    wowowo1
    wowowo1
    Jan 12, 2018
    33
    @algery 直接屏蔽得了,他们这门语言就喜欢碰瓷系营销。
    wowowo1
    wowowo1
    Jan 12, 2018
    34
    搞不明白了,

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

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

    精神胜利?
    QAPTEAWH
    QAPTEAWH
    Jan 12, 2018
    35
    路过求个图,各种编程语言图示。其中 C 是一颗子弹,golang 是三颗子弹。
    amaranthf
    amaranthf
    Jan 12, 2018
    36
    @bramblex 大而全的东西总有自己的缺点,C 和 C++很通用了吧,前者构建大型工程的能力堪忧,后者的开发效率或者说对开发人员的水平要求是个硬伤,rust 更不用说了,学习阶梯感觉比 C++还要陡峭,可读性也是个问题。Java 在刚刚这些方面要好一些,但是整体来说就是一个“中庸”。而反观其他一些 specific 的领域,go 在后端以及不需要图形界面的中小型应用方面、python 在不关注执行效率的时候,js 在……在特么各种领域,也都混得风生水起。
    wizardforcel
    wizardforcel
    Jan 12, 2018
    37
    @bramblex C++ 的 ABI 一团糟,这点真不如 Golang。一个二进制处理方式的问题居然能扯到语言特性上。那 C++ 模板这种负生产力,去工业化的设计是不是该拿来黑一黑?
    dobelee
    dobelee
    Jan 12, 2018
    38
    原来是黑 php 的帖子。
    rwdy2008
    rwdy2008
    Jan 12, 2018
    39
    工作团队需要什么语言,我就学习并使用什么语言,技多不压身。
    所以,你们在互相鄙视争论什么
    assad
    assad
    Jan 12, 2018 via Android
    40
    @bramblex 哈哈。这个梗都能扯上 php !!
    bramblex
    bramblex
    Jan 12, 2018 via iPhone
    41
    anewg
    anewg
    Jan 13, 2018
    42
    @bramblex 求推荐些非残疾语言
    PythonAnswer
    PythonAnswer
    Jan 13, 2018 via Android
    43
    @itplanes01 哈哈你是说 goer 内心是爱 php 的 不然非叫啥 gopher 插点 ph 进去
    Keyes
    Keyes
    Jan 24, 2018 via Android
    44
    @rwdy2008 明白人
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1524 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 73ms · UTC 06:57 · PVG 14:57 · LAX 22:57 · JFK 01:57
    ♥ Do have faith in what you're doing.