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

2023-07-04 00:23:01 +08:00
 aim467

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

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

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

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

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

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

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

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

pip install package-gen

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

比如:
pk-gen mytest

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

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

产物体积小且快, rust zig

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

java graalvm 应该也可以, 没用过
lhbc
2023-07-04 01:34:03 +08:00
golang 最佳
别用 cgo
wxf666
2023-07-04 02:39:57 +08:00
你给点工具的应用场景出来呗?

比如,音视频处理?文本处理?结构数据处理?……
shuimugan
2023-07-04 03:09:38 +08:00
c sharp(aot 编译)
javascript/typescript(deno 或者 pkg)
dart 类似 ts 的语法
MrKrabs
2023-07-04 03:11:06 +08:00
zig rust swift
crab
2023-07-04 03:52:40 +08:00
bat
zsj1029
2023-07-04 05:50:03 +08:00
Dart 发布二进制自带虚拟机,类似 Java

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

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

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

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

© 2021 V2EX