哪种语言编写的程序转成可执行文件比较方便(exe / binary file) ?

310 天前
 aim467

想写一些小工具,主要是基于命令行上进行操作的工具,想问问大家哪个语言来写比较方便

12385 次点击
所在节点    程序员
159 条回复
westoy
310 天前
golang 大法好
alexapollo
310 天前
我觉得写小工具可能还真是 https://github.com/geekan/MetaGPT 这个比较方便……
H0H
310 天前
Java 这类最通用的跨操作系统的语言就可以。然后用 Native 语言给写个启动器来找到 JRE 后将相关参数传进去启动即可,Windows 下面我用汇编语言写了启动器,你可以选择用 Visual Studio 下的 C++来写这个启动器; macOS 下我就用那个 Swift 写了启动器。

其实只要你会用 native 语言来写这个启动器,那么各种编程语言都能制作成一个单独的 exe 文件。只不过一般人不会要求全部合并成一个 exe 文件,都是一个 exe 文件带很多 dll 或 jar 包等。

比如 Java 写的程序非要合并成一个 exe ,那么就可以将 JRE 、Jar 包作为资源文件放到启动器那个 exe 中,这样就变成了一个单独的 exe 程序。启动器启动后,将 JRE 、jar 包释放到临时目录运行就行了。
Trim21
310 天前
golang ,交叉编译很方便。
LeeReamond
310 天前
@H0H 你这个方法要是算简单的话那大部分语言都挺简单。。。小工具+好编译成二进制=go 或者 rust
jackmod
310 天前
能够比较简单制造 exe 的话估计只有 golang 和 rust 了,不过 linux 下的 rust 需要使用 musl 达到 static
fbichijing
310 天前
你提出的问题和描述似乎不太相同啊。

如果是 exe 的话不是基本上圈定 C, C++ 了吗?独立的可移植的 exe 文件。

如果是基于命令行进行操作的工具,那我觉得使用 python 写命令行是十分舒服的。
写成一个 package ,自定义喜欢的全局命令,只要存在 python 环境自己安装一下就能全局使用了。现在的服务器基本上都预装有 python ,所以就像是写一次可以各个地方运行了。

因为平时经常有这需求,而这种全局命令的文件格式又十分固定。所以我写成一个十分简单的 package 放在 pypi 上,方便自己使用......用来方便自己构建全局命令。

------
以下只是我自己平时的使用方式,因为自己写的这个 package 很简单,只是作为举例之用。

pip install package-gen

然后提供了一个全局命令:pk-gen

比如:
pk-gen mytest

就生成一个 package 的模板,往里面定义自己想要的全局命令,然后将实现代码敲出来就行了。比起去弄 gui ,全局命令这方面写起来就很舒服。
Trim21
310 天前
之前写了个一百来行的命令行程序,用 goreleaser 编译然后发布,goreleaser 的默认设置已经完全能满足你的这个需求了

https://github.com/trim21/try
Licsber
310 天前
我的设备同时有 linux bsd mac win 所以我的小工具包已经成 python 改成 golang 了
非常方便改下 GOOS 就能换系统 改 ARCH 就能换架构
目前工具类型涵盖了文件元信息计算、文件夹统计、去重、获取微信 token 、快捷打印、检测电脑是否摸鱼(空闲微信提醒)等
Licsber
310 天前
@Trim21 #8 哈哈哈 当时也有这个需求
然后学着 shell 写了个 判断 $? -eq 0 自动重试的 function
看来大家都遇到过这样的问题
kljsandjb
310 天前
Rust 挺合适的
u823tg
310 天前
为啥一定要 exe 之类二进制文件呢, 小工具还是命令行不是脚本语言最好用吗,随时更改的。
aa51513
310 天前
@kljsandjb 用 Rust 进行 GUI 编程,真的一言难尽,装开发环境都能磨死人
Al0rid4l
310 天前
生态上 go rust, 很多 tui 以及其他 cli 相关的库, c/c++ 生态不用说, 但是和方便不搭边

产物体积小且快, rust zig

方便且跨平台, go rust c# zig, 后面两个生态差点, 综上 go rust

java graalvm 应该也可以, 没用过
lhbc
310 天前
golang 最佳
别用 cgo
wxf666
310 天前
你给点工具的应用场景出来呗?

比如,音视频处理?文本处理?结构数据处理?……
shuimugan
309 天前
c sharp(aot 编译)
javascript/typescript(deno 或者 pkg)
dart 类似 ts 的语法
MrKrabs
309 天前
zig rust swift
crab
309 天前
bat
zsj1029
309 天前
Dart 发布二进制自带虚拟机,类似 Java

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/953828

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX