You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在WSL(Ubuntu)下编译C#时,如何指定Mono编译为ARM64架构

我来帮你搞定Mono编译架构指定和产物验证的问题——毕竟在ARM Windows上跨架构编译确实需要点针对性操作:

如何用mcs命令指定目标编译架构

Mono的mcs编译器支持通过-platform参数直接指定目标架构,对应不同架构的命令如下:

  • 编译为x64架构:
    mcs -platform:x64 FILE.cs
    
  • 编译为x86架构:
    mcs -platform:x86 FILE.cs
    
  • 编译为ARM32架构:
    mcs -platform:arm FILE.cs
    
  • 编译为ARM64架构:
    mcs -platform:arm64 FILE.cs
    

小提醒:如果你的WSL2 Ubuntu是ARM64版本,编译ARM/ARM64产物会更顺畅;如果是x86_64的WSL,可能需要确保Mono安装了交叉编译相关的组件(一般默认安装的Mono已经支持多目标架构),要是遇到报错,可以尝试安装对应架构的Mono运行时包,比如sudo apt install mono-runtime-arm64(针对ARM64架构)。

如何确认编译产物的架构

有两种简单的方式可以验证生成的.exe文件架构:

  • 在WSL Ubuntu环境下检查:
    使用file命令直接查看文件信息,命令如下:

    file FILE.exe
    

    输出结果会明确标注架构,比如:

    • x64:PE32+ executable (console) x86-64, for MS Windows
    • x86:PE32 executable (console) Intel 80386, for MS Windows
    • ARM32:PE32 executable (console) ARMv7 Thumb, for MS Windows
    • ARM64:PE32+ executable (console) AArch64, for MS Windows
  • 在Windows环境下检查:
    可以用系统工具或PowerShell操作:

    1. 右键.exe文件 → 属性 → 详细信息,在“文件版本”区域会显示架构标识;
    2. 使用dumpbin工具(需要安装Visual Studio Build Tools),运行命令:
      dumpbin /headers FILE.exe
      
      在输出的FILE HEADER VALUES部分,找到machine字段,对应值为:
      • x64:8664 machine (x64)
      • x86:14C machine (x86)
      • ARM32:1C0 machine (ARM)
      • ARM64:AA64 machine (ARM64)

内容的提问来源于stack exchange,提问作者bbke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 21:22:44