首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
beego
华为云
V2EX  ›  Go

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

  •  
  •   sun1991 · 283 天前 · 3493 次点击
    这是一个创建于 283 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

    以及真不喜欢 go 这个半残疾的语言.
        11
    mengzhuo   283 天前
    是的

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

    看编译方式和喜好了,

    只看编译方式:

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

    但是说到喜好:

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


    对楼上有些人:&还是 '鬼画符语言适合你。
        15
    bramblex   283 天前   ♥ 1
    @amaranthf

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

    所以我不喜欢 go.
        16
    bramblex   283 天前
    已 block 楼上那种不懂乱喷的.

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

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

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

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

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

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

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

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

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