欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

在Linux上运行C#的方法

程序员文章站 2023-12-16 11:20:34
本文实例讲述了在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:

复制代码 代码如下:
rpm -ivh *.rpm

安装完成后,所有基本的动态执行库,包括system.data.dll、system.dll、system.drawing.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,intermediate 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、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 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-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#程序设计有所帮助。

上一篇:

下一篇: