在Linux上运行C#的方法
本文实例讲述了在linux上运行c#的方法。分享给大家供大家参考。具体方法如下:
在任何一个平台(操作系统+硬件体系)上,编写和运行程序的三个最根本的需求是库、编译器/解释器、运行环境。库以类和方法(函数)的形式提供常用的例程,简化大型程序的编写。.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:
安装完成后,所有基本的动态执行库,包括system.data.dll、system.dll、system.drawing.dll、system.web.dll和system.xml.dll都被复制到/usr/lib下。接下来,在linux文本编辑器中输入下面的内容,把文件保存为hellomono.cs:
{
public static void main(string[ ] args)
{ system.console.writeline("hello mono");
}
}
执行下面的命令编译c#文件:
mcs是mono的c#命令行编译器。与ms .net sdk的csc编译器相似,mcs也有很多命令行选项。上面的命令将生成可执行文件hellomono.exe。注意这个执行文件不是linux执行文件,而是一个.net执行文件,或者说,这个文件的可执行代码形式是中间语言(il,intermediate language)。要运行这个执行文件,必须执行如下命令:
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:
解开gtk-sharp-0.2.1.tar.gz:
进入子目录gtk-sharp-0.2.1,执行:
make
make install
完成这一步骤之后,重新启动一次。与gtk#有关的所有动态代码模块(gtk-sharp.dll、atk-sharp.dll、gdk-sharp.dll、glib-sharp.dll以及pango-sharp.dll)都会被复制到/usr/lib目录,编译用gtk#制作gui的c#程序时,必须通过-r参数引用它们。gtk#下载包中包含了几个示例程序,如helloworld.cs、menu.cs、buttonapp.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 menu.exe
mono buttonapp.exe
mono项目还在完善和发展之中,还没有移植好全部.net类。但不管怎样,它对许多人来说将是一个好消息。有关mono c#类库移植进展的信息,感兴趣的朋友可以访问www.go-mono.com/class-status.html。
考虑一个典型的服务器/客户机式.net应用:最终用户只与客户端打交道,客户端最好是方便的gui应用,许多人还会希望使用熟悉的windows平台。但是,对于他们来说,服务器端使用windows还是linux完全无关。所以,服务器端可以用带有mono的linux构造,节省了配备专用windows服务器的投资。mono也将为应用迁移带来方便。如果mono能够顺利发展,windows开发者也将能够为linux或其他非windows平台开发应用。如果这样的话,不久之后出现一个类似visual studio .net但免费或廉价的linux开发ide也说不定。
然而,所有这一切是否能够成为现实,依赖于mono是否能够茁壮发展,也依赖于mono与windows平台上的.net框架兼容或相似程度。另外一些因素也很关键,例如mono的性能、gui的友好程度等。
希望本文所述对大家的c#程序设计有所帮助。