.net AOT发布方案

    之前介绍了手机上构建linux解决AOT的发布问题,实际上,这边还做过一些其他尝试,比如使用Qemu直接在windows上模拟一份arm64环境,做AOT发布和测试,以及一个实体的RK3568主板,基于Armbian来做发布和测试。

但是Qemu的跨架构模拟,性能折损太厉害了,AOT编译时长很难满意,这边做项目前期,是用手机做编译。

    后续想到dgx spark既然也是arm,就改为直接用dgx spark,编译速度直接起飞。

 

这里整理下试过的.net AOT发布方案:

1.RK3568板卡+Armbian

使用的是淘来的seawo 一体机主板,烧入了github上的开源Armbian镜像。

主要问题是要解决dtb问题,让网口和hdmi能正常工作。

使用.net 10发布linux-arm64嵌入式项目,发布时长大概10分钟

如果要控制libc版本,就需要上docker,通过Ubuntu20.04镜像构建发布,这样能将libc版本依赖降低到目标版本。

 

2.Qemu模拟ARM64 ubuntu20环境

使用13代 i7-13700H,Qemu模拟6核a76,4G内存

好处是架构模拟基本贴近实机,但是编译速度慢

使用.net 10发布linux-arm64嵌入式项目,发布时长大概15分钟或更久

 

3.使用888的手机chroot+debian10

折腾环境比较费劲,加上现在linux deploy已经好几年前就放弃支持了,新版本linux无法构建。

好处是实机架构,性能很好。

使用.net 10发布linux-arm64嵌入式项目,发布时长大概2分钟出头,部分情况下120s。

 

4.dgx spark

原本做AI相关研究的,突然在项目中发挥了另外的作用,挺欣喜。

好处是原生ARM64架构,而且有数量足够的大核。

使用.net 10发布linux-arm64嵌入式项目,发布时长大概1分钟不到,大部分情况只要40s出头。

如果要控制libc版本,就需要上docker,通过Ubuntu20.04镜像构建发布,这样能将libc版本依赖降低到目标版本。

最近发现使用chroot构建ubuntu20.04,这种方案性能更好,而且使用也更加方便,避免需要docker中来回拷贝发布程序。

 

5.使用PublishAotClang实现跨平台发布

这个是近期博客园看到帖子提供的技术方案,很好很强大,基本解决了大部分问题,而且带来一些其他惊喜。感谢技术工作者的默默付出。

好处直接windows上跨平台跨(linux)发布到arm架构,包括32、64位,其中32位的arm发布彻底打消了我去购入实机Arm32的冲动(之前想找个旧A15架构的板卡,做arm32的发布的)

而且内置了musl的支持,可实现静态编译,可以搞些骚操作。

使用.net 10发布linux-arm64嵌入式项目,发布时长大概1分钟,已经很快了。

 

但是没有dgx spark快(即便对比发布x64本地平台,依然没有它发布arm64快),dgx spark的CPU也是真的有点东西。

 

下期讲些用musl弄的骚操作。

 

posted @ 2026-07-24 10:08  猿妙不可言  阅读(2)  评论(0)    收藏  举报