是否有可能在x86上强制启动mono运行时?

时间:2014-10-30 20:55:06

标签: c# .net mono x86 64-bit

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

using System;

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

让我们用单声道编译器构建它作为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应用程序启动。如果我在Windows上使用Microsoft .NET Runtime运行此二进制文件,我在控制台输出中得到4(它将作为x86应用程序运行)。那么,可以强制启动单声道运行时作为x86?

1 个答案:

答案 0 :(得分:1)

-platform:x86标志用于编译器。它与单声道运行时分配给程序的内存空间无关。如果要将程序作为64位运行,则使用64位单声道运行时。如果要将程序作为32位运行,则使用32位单声道运行时。

因此,此问题与Mono interop: Loading 32bit shared library does not work on my 64bit system

重复