首页 > 其他分享 >跨平台交叉编译 Native AOT

跨平台交叉编译 Native AOT

时间:2024-12-19 22:55:00浏览次数:4  
标签:zig 交叉 编译 跨平台 AOT https Linux NET Native

如何将.NET 应用程序发布到鸿蒙上,肯定是很多人感兴趣的话题,目前.NET完全具备可以在OpenHarmony系统上运行的能力,.NET 现在有很多选项CoreCLR、Mono和NativeAOT。由于OpenHarmony的沙箱环境的限制,NativeAOT是最佳选择。孙策同学经过几个月的探索,他2024年12月14日在上海举办的.NET Conf China 2024 大会上和大家分享他的探索经验和成果,OpenHarmony作为一个开源的操作系统,本身就具有强大的兼容性和扩展性。而Avalonia则是一个跨平台的UI框架,能够在不同的操作系统上提供一致的用户体验。将这两者结合起来,简直就是强强联手!9月份写的这篇文章《.NET 的 Native AOT 现在是什么样的?》里已经有跨平台交叉编译NativeAOT的答案:使用 Zig 作为链接器和 sysroot,允许从 Windows 机器交叉编译到 Linux-x64、Linux-arm64、Linux-musl-x64 和 Linux-musl-arm64。

NativeAOT(Native Ahead-Of-Time Compilation)是一种将 .NET 程序编译成本地机器代码的技术,以提高应用程序的性能和启动速度。交叉编译是指在一个平台上为另一个平台生成代码的过程。例如,在 Windows 上为 Linux 生成可执行文件。

为了交叉编译,你需要为目标平台安装相应的工具链。例如,如果你想为 Linux 交叉编译,你需要在 Windows 上安装 Linux 的工具链(如 GCC、Make 等)。这通常可以通过安装 Windows Subsystem for Linux (WSL) 或使用其他工具如 MinGW 来实现。我们有了更好方法:这个项目的地址:https://github.com/CeSun/PublishAotCross

使用步骤:

1、从zig官网:https://ziglang.org/download/下载并配置 Zig:将 zig-windows-x86_64-0.14.0-dev.2540+f857bf72e.zip 解压并添加到 PATH。 这里要注意的一点是整个压缩包的内容要完整,复制二进制文件,还要复制 lib 目录,不然就可能发生找不到zig.exe 的错误,具体参考https://christophvoigt.com/notes/unable-to-find-zig-installation-directory-filenotfound/

image

2、从https://releases.llvm.org/ 下载 LLVM 并将 llvm-objcopy 添加到 PATH,最简单的就是把llvm-objcopy.exe 文件放到zig.exe 相同目录下。

3、在项目中添加 PublishAotCross 的引用,具体可参考:https://github.com/CeSun/OpenHarmony.Avalonia

image

做好了上面的准备,就可以使用VS 的发布功能,下面的配置是使用新的 RID 发布项目,例如发布linux-musl-arm64 :

dotnet publish -r linux-musl-arm64

image

标签:zig,交叉,编译,跨平台,AOT,https,Linux,NET,Native
From: https://www.cnblogs.com/shanyou/p/18618066

相关文章

  • 探索PakePlus:解锁跨平台应用的新方式
    PakePlus是一个非常实用的开源项目哦,它有着独特又强大的功能,那就是可以将网页轻松转换为桌面应用以及移动应用呢。并且它支持多平台使用,无论是Mac、Windows,还是Linux系统,它都能很好地适配,而且很快也会支持Android和iOS系统啦,覆盖面可以说是相当广泛了。它的背后是由R......
  • [迅为RK3568开发板]非科班也能玩转Android应用,体验QT跨平台能力
      QTforAndroid优势01-跨平台的优越性Qt是一个强大的跨平台框架,允许开发者使用相同的代码库来构建多个平台上的应用,包括Windows、macOS、Linux以及移动平台Android和iOS。这意味着开发者不需要为每个平台单独编写代码,可以显著减少开发时间和维护成本。同时,Qt提供......
  • 微信Native支付(Java)
    微信开放平台链接:Native下单_Native支付|微信支付商户文档中心导入依赖:<dependency><groupId>com.github.wechatpay-apiv3</groupId><artifactId>wechatpay-java</artifactId><version>0.2.15</version></dependency> 配置ymlwx......
  • Flutter OHOS flutter_native_image
    flutter_native_image原生Flutter图片工具此插件旨在提供原生工具来调整图像大小并通过压缩降低其质量。代码有点粗糙(尤其是iOS部分),但它可以满足我的需求,并且从未崩溃过。如果您愿意,请随意改进它。用法安装在依赖项下的pubspec.yaml中添加以下几行flutter_native_imag......
  • Flutter OHOS flutter_dart_native
    DartNativeDartNative作为Dart和原生API之间沟通的桥梁。用更快、更简洁的代码替换性能低下的Flutter通道。特征动态同步和异步通道DartNative动态调用任何原生API。它支持同步和异步通道。多语言接口直接调用不再需要像FlutterChannel那样对参数和返回值进行......
  • 四大跨平台开发框架深度解析——uniapp、uniapp-X、React Native与Flutter
    引言随着移动互联网的飞速发展,跨平台开发框架成为了开发者们关注的焦点。这些框架旨在通过编写一套代码,实现多个平台的应用开发,从而大幅提高开发效率和降低维护成本。本文将深入剖析uniapp、uniapp-X、ReactNative和Flutter这四个主流的跨平台开发框架,探讨它们的优缺点及......
  • 跨越边界:MySQL跨平台性能优化全攻略
    在当今全球化和技术多样化的背景下,确保应用程序能够在各种操作系统上无缝运行并提供一致的用户体验变得至关重要。对于数据库系统而言,这意味着不仅要保证数据的一致性和完整性,还要确保其在不同环境下的高效运作。MySQL作为世界上最受欢迎的关系型数据库管理系统之一,支持多种......
  • React Native学习路线图
    ‌ReactNative是由Facebook开发的一个开源框架,它允许开发者使用JavaScript(或TypeScript)和React来构建移动应用程序。通过提供一个共享的代码库,它能够为iOS和Android两个平台构建应用程序,从而显著减少开发时间和工作量。获取路线图你可以下载OpenLinkSaas客户端,......
  • springboot校园拼车跨平台-毕业设计源码21531
    基于uni-app的校园拼车跨平台移动应用的设计与实现摘 要随着移动互联网的普及和智能设备的广泛使用,移动应用已经成为人们日常生活中不可或缺的一部分。特别是在校园环境中,学生对于便捷、高效的移动应用需求日益增加。校园拼车作为一种绿色、环保且经济的出行方式,受到了越......
  • 微信native支付对接案例详解
    微信native支付对接案例详解效果展示native支付产品介绍接入前准备开发指引API列表支付通知开发者社区整体原则就是按照官方文档一步一步来支付产品微信认证注意:只有服务号才能对接微信支付。每年都需要花300块认证费用。......