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

发布于 1周前 作者 caililin 来自 Go语言

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


Golang Go语言的程序编译完成后, 最终都是单个可执行文件?
45 回复

没有
如果想要,连 web 的那些图片资源,静态页都可以给你打包进去

更多关于Golang Go语言的程序编译完成后, 最终都是单个可执行文件?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


go 就是为了解决 c++那些复杂的依赖而来的

<br>go build -buildmode=shared -linkshared pkg_name<br>go build -linkshared main.go<br>

1.5 版开始就可以动态链接了, 如果一定要这样的话…



go 和 c 艹不在同一个层次好不, 有什么可以比较的?

> go 就是为了解决 c++那些复杂的依赖而来的

然后把 Java 干翻了。

支持动态链接库 so 文件

差不多还是在同一个层次的,都是编译型、静态类型的,也就是多个 runtime 而已。

是啊,
而且不需要配置就可以交叉编译,直接一次性编译出来 windows、linux、android 下的代码。

看是不是用 cgo,用了就不一定了。



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

以及真不喜欢 go 这个半残疾的语言.

是的

谁再敢在生产环境给我整动态链接库的我整死谁

看层次怎么定义了,反正在我看来所有直接编译成 native 代码的东西都是同一个层次的。
我觉得 go 还是蛮好用的,用这东西写代码,最初你会觉得憋屈,但是憋屈惯了就会发现这东西的开发效率是真高,比 C++高一百倍,工程规模上去之后比 python 也不弱。

楼上真是为了黑而黑的黑。

不纯粹。

看编译方式和喜好了,

只看编译方式:

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

但是说到喜好:

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


对楼上有些人:&还是 '鬼画符语言适合你。



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

所以我不喜欢 go.

已 block 楼上那种不懂乱喷的.

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

不懂没问题, 不要瞎比比.
不然我会觉得 goer 都沦落到 phper 水平了.

#16 沦为???你这个素质也高不到哪里去

#17 哦。。是沦落。。那素质更差了

现代通用编程语言,是啥意思,求科普

看眼 go build 的帮助就知道了

go 开发者的称呼貌似不是 goer,所以,所以了。

而且 goer 的英语意思有骂人的语义。

go 用 8 宽 tab 缩进你们能忍?

用纯 Go 的一般是单个文件,但是也可能动态链接( netdns 部分)。用 cgo 的一般会有外部依赖,但是也可以静态链接 gcc 的运行时。

说 go 就说 go 干嘛要黑我们 phper 你再这样说我可要争论一下世界上最好的语言了

大概就是应用了现代 PL 理论成果的语言吧,比如有更强大的类型系统。说真的,我觉得 golang 的类型系统真聊胜于无。写类似泛型的代码那是一个痛苦,各种 interface {}。golang 作为一门语言,我觉得他更适合于分布式系统的领域。毕竟有一套比较好的基础,goroutine 什么的。一般性能要求不是特别高的,用 golang 写玩爆其他的,开发速度快,运行速度也过得去。还有就是跨平台简单的应用开发。

这个应该不是规定的吧,tab 没有规定是 8 个空格宽啊,你可以自行设定为 4 个甚至 2 个空格宽,记得只是缩进用 tab 吧

不一定,有些情况下可以有动态链接的

动态链接是后面加的功能了,如果不去特地使用。都是静态的,只有一个二进制文件,真的一处编译,四处运行哦

作为曾经的 phper,php 真轮不到你鄙视,trait interface,class,现代语言里有的,php 少了哪个?

咋搞进去啊

反回去 block。

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

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

![]( )

直接屏蔽得了,他们这门语言就喜欢碰瓷系营销。

搞不明白了,

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

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

精神胜利?

路过求个图,各种编程语言图示。其中 C 是一颗子弹,golang 是三颗子弹。

大而全的东西总有自己的缺点,C 和 C++很通用了吧,前者构建大型工程的能力堪忧,后者的开发效率或者说对开发人员的水平要求是个硬伤,rust 更不用说了,学习阶梯感觉比 C++还要陡峭,可读性也是个问题。Java 在刚刚这些方面要好一些,但是整体来说就是一个“中庸”。而反观其他一些 specific 的领域,go 在后端以及不需要图形界面的中小型应用方面、python 在不关注执行效率的时候,js 在……在特么各种领域,也都混得风生水起。

C++ 的 ABI 一团糟,这点真不如 Golang。一个二进制处理方式的问题居然能扯到语言特性上。那 C++ 模板这种负生产力,去工业化的设计是不是该拿来黑一黑?

原来是黑 php 的帖子。

工作团队需要什么语言,我就学习并使用什么语言,技多不压身。
所以,你们在互相鄙视争论什么

哈哈。这个梗都能扯上 php !!

求推荐些非残疾语言

哈哈你是说 goer 内心是爱 php 的 不然非叫啥 gopher 插点 ph 进去

在Golang(通常简称为Go)编程语言中,程序编译完成后,确实大多数情况下会生成单个可执行文件。这是Go语言设计哲学中的一个重要特点,强调简洁、高效和可移植性。

Go编译器通过静态链接的方式,将程序及其依赖的所有库(包括Go标准库和第三方库)都打包进最终的可执行文件中。这种做法简化了分发和部署流程,因为用户无需关心依赖库的安装和配置,只需一个文件即可运行程序。

然而,值得注意的是,虽然Go程序通常生成单个可执行文件,但在某些特殊情况下,可能涉及到额外的资源文件(如配置文件、静态资源等)。这些文件需要与可执行文件一同分发,但它们不属于编译过程的一部分。

此外,Go还支持交叉编译,即在不同操作系统和架构上编译出可在目标平台上运行的可执行文件。这一特性使得Go程序能够轻松地在多种环境下部署和运行。

综上所述,Golang程序编译完成后,确实主要生成单个可执行文件,这体现了Go语言在设计和实现上的简洁性和高效性。同时,Go还提供了强大的交叉编译能力,进一步增强了其跨平台部署的便利性。

回到顶部