是不是在linux上能运行c#?我在一个网站上看到下面的东西,请大家说说。
在Linux上运行C#
--------------------------------------------------------------------------------
源作者:仙人掌工作室 人气:1879
众所周知,C#是Microsoft推出的.NET语言,只能在.NET平台上运行,例如Win 9x、ME、NT、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.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的友好程度等。
问题点数:100、回复次数:31Top
1 楼shixueli(我们总是不能随心所欲)回复于 2003-08-02 21:25:53 得分 4
能不能运行,看编译器Top
2 楼chagel(Mike in Shanghai)回复于 2003-08-02 22:15:50 得分 4
http://www.go-mono.com/
想法是好的,其实没有多大意义
做的再好,人家要用.net还会放弃Windows?
不过对于微软倒是贴上一块金
Top
3 楼windsoft(風寒葉殘)回复于 2003-08-02 22:15:54 得分 4
我想比较难
至多也只是支持一部份功能
不可能象在windows下那样强大Top
4 楼cnhgj(戏子) (没时间练太极)回复于 2003-08-02 22:43:38 得分 5
希望如果如此Top
5 楼caoit(lost)回复于 2003-08-03 01:34:48 得分 4
gzTop
6 楼lzj18(孤独人生)回复于 2003-08-06 15:32:34 得分 0
upTop
7 楼anux(阿牛克斯)回复于 2003-08-06 19:10:40 得分 4
不错。希望它能更强大一些。
要知道,ms的服务器还是很贵的。Top
8 楼CMIC(大象)回复于 2003-08-06 19:31:02 得分 5
mono发展的太慢了.Top
9 楼lisoft2002(lisoft2002)回复于 2003-08-07 09:48:34 得分 5
budongTop
10 楼highman(看看)回复于 2003-08-07 09:54:28 得分 4
有谁用过吗?Top
11 楼qqsyb((一天到晚游泳的鱼))回复于 2003-08-07 10:12:52 得分 4
谁用过?这样用和在windows下有何区别?Top
12 楼hehaorome(石沉大海)回复于 2003-08-07 10:29:34 得分 4
人家要用.net还会放弃Windows?
这话有道理。Top
13 楼coudoufu(只爱细宝宝)回复于 2003-08-07 10:31:27 得分 4
早看过了……希望成功!Top
14 楼ddy2000(梦归自然)回复于 2003-08-07 10:46:02 得分 4
Mono是不是微软参与的Top
15 楼wheagle(小雄鹰飞)回复于 2003-08-07 11:02:15 得分 4
c#是一种新的语言
和.net应该说没有解不开的关系
所以c#用在linux下也不是没有可能的
语言想要健壮强大
跨平台性是不可少的
否则总会有不通用的地方
如果移植起来不方便
谁会死心塌地的用你呢
一家之言Top
16 楼lzj18(孤独人生)回复于 2003-08-08 16:37:25 得分 0
upTop
17 楼panyee(快乐王子)回复于 2003-08-08 16:58:03 得分 5
我装red hat 8,在上头测试过,像输出简单的东西还是可以的,
编译好的exe可以直接拿到windows上运行
现在asp.net也可以在linux也可以运行
就是支持的类库比较有限
Top
18 楼panyee(快乐王子)回复于 2003-08-08 17:00:35 得分 4
对winforms不支持,只能是dos界面的那种i/o操作Top
19 楼lzj18(孤独人生)回复于 2003-08-08 17:29:04 得分 0
upTop
20 楼lzj18(孤独人生)回复于 2003-08-08 17:30:47 得分 0
还有谁试过?Top
21 楼abcynic(门外汉)回复于 2003-08-08 17:33:23 得分 4
Mono已经可以做winform程序了,大家看看这个例子。
http://www.nullenvoid.com/mono/wiki/index.php/The%20TextBox%20Control.Top
22 楼nichotilikai(lk)回复于 2003-08-08 17:37:06 得分 4
微软曾表示过,想把.NET移植到FreeBSD上。不知道可有下文。
Top
23 楼alaisalaix(天上人间)回复于 2003-08-08 17:42:27 得分 4
我不知道这样做有多大意义?
linux中也不缺这个东东Top
24 楼abcynic(门外汉)回复于 2003-08-08 18:12:08 得分 4
意义还是有的,一个程序写好了,用户可以自己选择要用什么操作系统。
开发者不用因为用户选择的操作系统而重新写一次程序。
如果能在windows下开发,linux下用,对于程序员来说还是一件很方便的事情,不要装多重系统,玩游戏方便多了。Top
25 楼lyrixliu(WHO.NET)回复于 2003-08-08 20:14:09 得分 4
FreeBSD下肯定可以,Linux下好像不行吧
微软发布了FreeBSD下的.netFramework SDKTop
26 楼nehc(青义居士)回复于 2003-08-08 20:25:48 得分 4
我没有做过ui的mono程序,不过我看到过。确实是可以的。用gtk的说
我在linux抄了一个实验性质的代码,居然成功访问另外的机器上的mssql?!
就一个字,牛!Top
27 楼lzj18(孤独人生)回复于 2003-08-09 07:00:20 得分 0
说说吧Top
28 楼alphawin(云和山的彼端)回复于 2003-08-09 08:52:00 得分 4
可以的,只要有c#编译器,就像java一样Top
29 楼Beta4(一会就好)回复于 2003-08-09 08:53:38 得分 4
mono的力量太小了,主要是microsoft不愿意向上移植 .net
祝mono成功Top
30 楼lzj18(孤独人生)回复于 2003-08-09 11:49:45 得分 0
自己再upTop




