go 开发的软件移植转换为其他语言

2022-02-23 14:13:40 +08:00
 acbot

go 开发的软件编译后一般相对都比较大,go 有没有类似 Java JDK/JRE 或者是 c/c++ 运行库这样的东西,这样是不是就可以减小一些编译后的体积,特别是有多个 go 编译后的文件。由于嵌入式设备存储空间有限,想把 go 开发的项目移植转换成 c/c++, 是不是 只要 go 用到的库有 c/c++ 版本就可以完成移植转换,有没有工具能直接把 go 代码转换成 c 代码 然后编译。或者是这样的软件参考 go 项目思路直接重新实现就可以了,没有必要转换。

2583 次点击
所在节点    Go 编程语言
27 条回复
shynome
2022-02-24 09:34:32 +08:00
@acbot 看项目,共享的 std 动态库有 30M ,共享状态下的 http server 大小是 2M ,默认编译有裁剪的大小则是 11M ,hello-world 的区别则是 20K 和 6M ,实践下看哪种方式更适合
Kinnice
2022-02-24 09:37:29 +08:00
upx 压缩一下。
acbot
2022-02-24 09:59:19 +08:00
@shynome
@Kinnice 我都试试,谢谢
lysS
2022-02-24 11:45:38 +08:00
你的什么嵌入式?有操作系统嘛?有操作系统的话我觉得 go 的编译大小不算是问题把?
lysS
2022-02-24 11:47:58 +08:00
对了,编译时加上 `-ldflags "-s -w"` 大概可以减少一半的体积
acbot
2022-02-24 12:54:43 +08:00
@lysS 谢谢,不知道 `-ldflags "-s -w"` 再加 #22 upx 方法能不呢个达到预期!
xsen
2022-02-25 20:49:45 +08:00
-ldflags "-s -w" + upx 之后,大小可以缩小到 25-30%

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

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

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

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

© 2021 V2EX