如何在Linux上运行Mono

news/2024/7/7 15:13:46
众所周知,C#是Microsoft推出的.NET语言,只能在.NET平台上运行,例如Win 9x、ME、N
T、2000、XP和Win CE之类的操作系统。但是,现在却有了一个叫做Mono的项目,它的目标
就是把.NET及其编程语言移植到非Windows的平台上。现在,C#是唯一被移植到非Windows
平台的.NET语言。 

在任何一个平台(操作系统+硬件体系)上,编写和运行程序的三个最根本的需求是库、编
译器/解释器、运行环境。库以类和方法(函数)的形式提供常用的例程,简化大型程序的
编写。.NET框架也不例外,包含了许多类库。另外,把程序转换成可执行形式以及运行执
行文件时,编译器和运行环境是必不可少的。Mono软件包包含了.NET类库的一部分、一个
C#编译器和.NET运行环境CLR(Common Language Runtime,公共语言运行时环境)。 

Mono声称支持Linux、Solaris、Free BSD和MS Windows;除了Intel x86系列的CPU(486,
各类Pentium等)之外,据说还要支持Sparc、PowerPC和StrongArm处理器。 

下面就来看看如何在Linux上运行Mono。 


命令行应用 


先从Mono主页(http://www.go-mono.com/)下载软件,执行下面的命令安装所有RPM:


rpm -ivh *.rpm 



安装完成后,所有基本的动态执行库,包括System.Data.dll、System.dll、System.Draw
ing.dll、System.Web.dll和System.Xml.dll都被复制到/usr/lib下。接下来,在Linux文
本编辑器中输入下面的内容,把文件保存为HelloMono.cs: 

class HelloMono 

public static void Main(string[ ] args) 
{ System.Console.WriteLine("Hello Mono"); 





执行下面的命令编译C#文件: 

mcs HelloMono.cs 



mcs是Mono的C#命令行编译器。与MS .NET SDK的csc编译器相似,mcs也有很多命令行选项
。上面的命令将生成可执行文件HelloMono.exe。注意这个执行文件不是Linux执行文件,
而是一个.NET执行文件,或者说,这个文件的可执行代码形式是中间语言(IL,Intermed
iate Language)。要运行这个执行文件,必须执行如下命令: 

mono HelloMono.exe 



Linux控制台上将显示出"Hello Mono"。关于mcs和Mono的更多说明,请执行man mcs或man
 mono参考其man文档。 


GUI应用 


Mono不支持Windows Forms,但在C#编程中可用GTK #编写GUI。GTK #是GTK+图形库的C#支
持工具,可从http://gtk-sharp.sourceforge.Net/下载。下载完成后,先要安装RPM:


rpm -Uvh *.rpm --nodeps 
解开gtk-sharp-0.2.1.tar.gz: 
tar -zxvf gtk-sharp-0.2.1.tar.gz 
进入子目录gtk-sharp-0.2.1,执行: 
./configure --prefix=/usr 
make 
make install 



完成这一步骤之后,重新启动一次。与GTK#有关的所有动态代码模块(gtk-sharp.dll、a
tk-sharp.dll、gdk-sharp.dll、glib-sharp.dll以及pango-sharp.dll)都会被复制到/u
sr/lib目录,编译用GTK#制作GUI的C#程序时,必须通过-r参数引用它们。GTK#下载包中包
含了几个示例程序,如HelloWorld.cs、Menu.cs、ButtonApp.cs等。编译这些文件的命令
如下: 

mcs -r gtk-sharp -r glib-sharp HelloWorld.cs 
mcs -r gtk-sharp -r glib-sharp -r System.Drawing Menu.cs 
mcs -r gtk-sharp -r glib-sharp -r System.Drawing ButtonApp.cs 



下面来看看如何通过-r选项引用前面各个.dll动态模块。执行startx命令启动X Window,
进入终端窗口,再进入示例程序所在目录,执行下面的命令分别运行各个程序: 

mono HelloWorld.exe 
mono Menu.exe 
mono ButtonApp.exe 



Mono项目还在完善和发展之中,还没有移植好全部.NET类。但不管怎样,它对许多人来说
将是一个好消息。有关Mono C#类库移植进展的信息,请访问www.go-mono.com/class-sta
tus.html。 

考虑一个典型的服务器/客户机式.NET应用:最终用户只与客户端打交道,客户端最好是方
便的GUI应用,许多人还会希望使用熟悉的Windows平台。但是,对于他们来说,服务器端
使用Windows还是Linux完全无关。所以,服务器端可以用带有Mono的Linux构造,节省了配
备专用Windows服务器的投资。Mono也将为应用迁移带来方便。如果Mono能够顺利发展,W
indows开发者也将能够为Linux或其他非Windows平台开发应用。如果这样的话,不久之后
出现一个类似Visual Studio .NET但免费或廉价的Linux开发IDE也说不定。 

然而,所有这一切是否能够成为现实,依赖于Mono是否能够茁壮发展,也依赖于Mono与Wi
ndows平台上的.NET框架兼容或相似程度。另外一些因素也很关键,例如Mono的性能、GUI
的友好程度等。  

http://www.niftyadmin.cn/n/1406188.html

相关文章

cmd查看mysql大小_关于查看MSSQL 数据库 用户每个表 占用的空间大小

最近做项目需要查看数据用户表的大小,包括记录条数和占用的磁盘空间数目。在网上找了很久其中查看MSSQL数据库每个表占用的空间大小 相对还可以。不过它的2、3中方法返回的数据比较多,有些是我们不关心的数据,我在AdventureWorks2012数据上做…

mysql 建表优化_mysql优化1:建表原则

建表三大原则:定长和变长分离常用字段和不常用字段分离使用冗余字段或冗余表1、定长与变长分离如 id int,占4个字节,char(4)占4个字符长度,也是定长,time即每一个单元值占的字节是固定的。在磁盘上查找时,由…

JAVA中的时间操作

经常看见jsp版里有人问时间操作的问题,这些问题一般包括:取当前时间,把一个指定的字符串时间转化成时间类型,求两个时间之间的天数,求一段时间以前的时间,求一段时间以后的时间,在这里就把这些问…

CentOS 5.1下跑Mono和Asp.net的实现方法

由于想研究在linux下跑.net程序的可行性,于是尝试在CentOS5.1下搭建Mono环境和Asp.Net的服务器。Asp.Net的服务器是采用mod_mono和Apache的方式搭建(Nginx的搭建尚未研究)。 下载编译环境: yum install gcc bison pkgconfig gli…

mysql在两值之间_在MySQL的两个列值之间选择一个特定值?

让我们首先创建一个表-mysql> create table DemoTable787 (Score1 int,Score2 int,Name varchar(100));使用插入命令在表中插入一些记录-mysql> insert into DemoTable787 values(34,56,Chris);mysql> insert into DemoTable787 values(73,86,Robert);mysql> inser…

JSP彩色验证码

<% page contentType"image/jpeg" import"java.awt.*, java.awt.image.*,java.util.*,javax.imageio.*" %> <%! Color getRandColor(int fc,int bc){//给定范围获得随机颜色 Random random new Random(); if(fc>255) fc255; if(bc>2…

Centos6.0下安装mono 4.0和Jexus 5.6.4,并配置运行网站

很多朋友想要在Linux下部署asp.net的网站&#xff0c;但是又苦于不懂配置环境。今天&#xff0c;我在这里给大家讲解一下如何在Centos 7.0下安装最新版的mono 4.0.0 Jexus 5.6.4&#xff0c;并配置运行网站。 首先用ssh连接linux机器&#xff0c;登录root账号。在这里直接用我…

华夫饼为什么不松软_华夫饼自己在家做,不加泡打粉,松软又可口,操作简单,一学就会...

华夫饼自己在家做&#xff0c;不加泡打粉&#xff0c;松软又可口&#xff0c;操作简单&#xff0c;一学就会下面就将具体制作做法同大家一起分享一下吧&#xff0c;喜欢的小伙伴们可以一起动手做起来喽&#xff0c;自己制作的不仅是不加任何添加剂&#xff0c;而且吃起来健康还…