4月15日,我在头条上发布了一篇文章,题目是《大家来看看,这是用什么语言写出来的Linux程序?会是java吗?》,有不少朋友提出了自己的看法,有说shell的,有说golang的,有说c/c++的,有说汇编的,也有说java的,莫衷一是。
首先要感谢各位朋友的踊跃参与!
这里,我要肯定告诉大家的是,这个程序不是用java开发的,也用不是golang开发的。因为仅从大小上来看,它们就办不到:据我所知,golang的“独立程序”是2M大小起步,即使只是一个 Hello World 都得这样大,而Java,即使用GraalVM处理,一个 Hello World 起码也得8M以上!但这个程序仅仅只有26K!即使使用rust开发,要生成这么小的程序可能也有不小的难度。
那么,这么小又包含这么多功能的程序,c/c++、汇编等行不行呢,当然行,但是写起来感觉太麻烦,也不是我写这个程序的初衷。比如用汇编来实现它,不知道要用多少时间写到何年何月。
那么,这个程序到底是用什么语言写的,怎么制作出来的呢,现公开如下:
1,语言:这个程序使用的程序语言是:c#。
2,.NET Core CLR:我自己开发的一个针对Linux系统的“小运行时”。
3,构建过程:
1)在VS2022中新建 .NET7 控制台程序项目,语言选择c#;
2)引用独自开发的“.net 运行时库”,并在项目配置文件中屏蔽.NET默认运行时;
3)用c#书写代码实现本程序功能;
4)直接在VS中将代码编译为托管程序;
5)用 .NET NativeAOT工具(命令:ilc)将此.NET托管程序、运行时库联合编译为本机目标文件(我将其命名为“x.o”);
6)用clang将目标文件链接成Linux平台可执行文件(ccc)。
附:
Main函数源码截图
线程函数截图:
大家有什么看法,欢迎评论讨论。
页面更新:2024-05-05
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号