众所周知,C#是Microsoft推出的.NET语言,只能在.NET平台上运行,例如Windows 9x/Me/NT/2000/XP和Windows CE之类的操作系统。但是,现在却有了一个叫做Mono的项目,它的目标就是把.NET及其编程语言移植到非Windows的平台上。目前,C#是惟一被移植到非Windows平台的.NET语言。

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

Mono声称支持Linux、Solaris、FreeBSD和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的友好程度等。

linux 系统中编译exe文件,在linux系统下执行C#编译的exe文件相关推荐

  1. Linux系统中的软件管理详解(下)—搭建网络软件仓库及第三方软件仓库

    Linux系统中的软件管理详解(下) 5.软件仓库管理命令 a)dnf 命令: 管理软件仓库中的安装包 dnf repolist ##列出仓库信息clean all ##清除系统中已经加载的仓库缓存信 ...

  2. target存放的是编译后的.class文件地方 默认情况下不会讲非class文件放入进入 如果要使用非.class文件 需要通过增加配置方式自动加入文件...

    target存放的是编译后的.class文件地方 默认情况下不会讲非class文件放入进入 如果要使用非.class文件 需要通过增加配置方式自动加入文件 转载于:https://www.cnblog ...

  3. android 系统 os,安卓系统中公认的5款手机系统,氢OS、EMUI、Flyme你用过几款?

    原标题:安卓系统中公认的5款手机系统,氢OS.EMUI.Flyme你用过几款? 对于智能手机系统,我们都知道是分为安卓系统和苹果的iOS系统,但是在安卓个这个大板块下,还有着很多手机厂商自研的手机系统 ...

  4. c语言中.dat是什么文件,c 盘目录下的windata.dat是什么文件 可以删吗

    Ntuser.dat.Ntuser.ini.Ntuser.dat及LOG日志文件都属于用户配置文件,就是系统用户的一些记录和配置,你不要删除!在当前用户下你也是删不掉的! 是注册表文件 Windows ...

  5. linux终端中超级用户用( )符号,Linux系统及应用-中国大学mooc-题库零氪

    第一周 系统状态查看工具:文本文件处理 <第一周单元测验>(一) 1.下面哪些部件不是一台物理上的字符终端必须具备的? A.以太网网卡 B.磁盘存储器 C.串行通信口 D.显示器 E.键盘 ...

  6. linux系统中list命令的含义,linux tasklist命令详解

    "Tasklist"命令是一个用来显示运行在本地或远程计算机上的所有进程的命令行工具,带有多个执行参数.那么它具体用法是怎样的呢?下面由学习啦小编为大家整理了linux taskl ...

  7. linux系统中boot什么意思说,Linux里boot什么意思

    <操作系统>课程设计报告课程设计题目:操作系统课程设计 设计时间:2016/1/10一. 课程设计目的与要求需要完成的内容:(1) 安装虚拟机:Vmware.Vmware palyer ( ...

  8. 在linux系统环境中 常用的关机命令,Linux常用基础命令整理:关机命令、查看目录下文件命令等...

    整理了一些Linux常用基础命令,欢迎指正. 首先记住四个热键,学会这四个键,收益一辈子. Tab按键---命令补齐功能 Ctrl+c按键---停掉正在运行的程序 Ctrl+d按键---相当于exit ...

  9. 在linux操作系统中启动oracle数据库程序,Linux系统下Oracle数据库的安装和启动关闭操作教程...

    这篇文章主要介绍了Linux系统下Oracle数据库的安装和启动关闭操作教程,并针对在sqlplus下所需执行的命令进行讲解,需要的朋友可以参考下 1.准备: df -H 查看空间剩余   一般准备最 ...

  10. 优麒麟在linux下安装教程,在优麒麟Ubuntu Kylin系统中安装百度网盘Linux版.deb的方法...

    本文介绍在优麒麟Ubuntu Kylin操作系统中安装百度网盘Linux版.deb的方法,可用在优麒麟及 Ubuntu 19.04/18.04上,当前百度网盘Linux版的版本号是Linux V2.0 ...

最新文章

  1. kali开启禁止或删除ssh 开机启动
  2. 预告:DIY光剑第二阶段,大宝剑二号 ——爱与家庭,银色复仇者
  3. 1025 反转链表 (25 分)(c语言)
  4. Python3绘图库Matplotlib(01)
  5. 【Docker】docker attach 卡住的问题
  6. android webview 长按复制,Android webview 点击或长按有蒙层 – 热爱改变生活
  7. rstudio和matlab,R语言与matlab循环时间对比
  8. 雷林鹏分享:jQuery Mobile 方向改变事件
  9. C++的multi_map如何输出所有key值相等的元素
  10. dosbox汇编环境turboC环境配置
  11. c#餐饮系统打印机_C# 实现打印机功能
  12. 谷歌金山词霸正式发布
  13. 楪祈机器人_饥荒 Inori楪祈人物MOD
  14. win10录屏_不为人知的win10隐藏功能,一键录屏,你还不知道?
  15. 网站变更服务器要重新备案吗,网站更换服务器要重新备案吗
  16. oracle的month函数的使用方法,oracle next_day,add_month函数
  17. Floor报错注入原理解析心得
  18. dos命令批量修改图片名称
  19. 这就是你要找的Spring-ioc简单入门!
  20. JavaScript------JS相关难题,做对一半算你牛牪犇

热门文章

  1. 都是山寨惹的祸 最邪恶安卓恶意程序肆虐网络
  2. Python语法都会,一写程序就懵,有解么?
  3. 中点画线算法画直线----计算机图形学
  4. 计算机体系结构实验1——计算机性能评测
  5. win10安装马上6卡在icon.ico的一种解决方案
  6. 计算机基础一级证exlse函数,原创—EXCEL自定义函数完成CPK/PPK/CP/PP/CPU/CPL等的计算...
  7. 使用Reaver破解开启了WPS功能的wifi密码(wpa/wpa2)
  8. r语言worldclim数据_arcgis中如何提取气候数据
  9. 安装sql server2008R2
  10. 3-5 掘金小册学习第二弹