是否可以在x86上强制启动mono运行时

本文关键字:启动 mono 运行时 x86 是否 | 更新日期: 2023-09-27 18:28:27

我有一个非常简单的程序:

using System;
public class Program
{
    public static void Main()
    {
        Console.WriteLine(IntPtr.Size);
    }
}

让我们使用mono编译器将其构建为x86应用程序,并在x64 mono:上运行

$ uname -srvmpio ; lsb_release -d
Linux 3.13.0-32-generic #57-Ubuntu SMP Tue Jul 15 03:51:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
Description:    Ubuntu 14.04.1 LTS
$ mono --version
Mono JIT compiler version 3.10.0 (tarball Mon Oct 27 14:33:41 IST 2014)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
        TLS:           __thread
        SIGSEGV:       altstack
        Notifications: epoll
        Architecture:  amd64
        Disabled:      none
        Misc:          softdebug 
        LLVM:          supported, not enabled.
        GC:            sgen
$ mcs -platform:x86 Program.cs
$ mono Program.exe
8

Mono已成功启动该程序。但它已经启动了我的程序作为x64应用程序。如果我在带有Microsoft.NET Runtime的Windows上运行这个二进制文件,我会在控制台输出中获得4(它将作为x86应用程序运行)。那么,强制启动mono运行时作为x86是可能的吗?

是否可以在x86上强制启动mono运行时

-platform:x86标志用于编译器。它与mono运行时分配给程序的内存空间无关。如果您想以64位运行程序,请使用64位mono运行时。如果您想以32位运行程序,请使用32位mono运行时。

因此,这个问题是Mono-interop的重复:加载32位共享库在我的64位系统上不起作用