对不起,不是java也不是golang!

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

标签:线程   截图   函数   大小   目标   语言   代码   文件   程序   项目

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top