在Linux上運(yùn)行C#的方法
本文實(shí)例講述了在Linux上運(yùn)行C#的方法。分享給大家供大家參考。具體方法如下:
在任何一個(gè)平臺(tái)(操作系統(tǒng)+硬件體系)上,編寫和運(yùn)行程序的三個(gè)最根本的需求是庫、編譯器/解釋器、運(yùn)行環(huán)境。庫以類和方法(函數(shù))的形式提供常用的例程,簡(jiǎn)化大型程序的編寫。.NET框架也不例外,包含了許多類庫。另外,把程序轉(zhuǎn)換成可執(zhí)行形式以及運(yùn)行執(zhí)行文件時(shí),編譯器和運(yùn)行環(huán)境是必不可少的。Mono軟件包包含了.NET類庫的一部分、一個(gè)C#編譯器和.NET運(yùn)行環(huán)境CLR(Common Language Runtime,公共語言運(yùn)行時(shí)環(huán)境)。
Mono聲稱支持Linux、Solaris、Free BSD和MS Windows;除了Intel x86系列的CPU(486,各類Pentium等)之外,據(jù)說還要支持Sparc、PowerPC和StrongArm處理器。
下面就來看看如何在Linux上運(yùn)行Mono。
命令行應(yīng)用
先從Mono主頁(http://www.go-mono.com/)下載軟件,執(zhí)行下面的命令安裝所有RPM:
安裝完成后,所有基本的動(dòng)態(tài)執(zhí)行庫,包括System.Data.dll、System.dll、System.Drawing.dll、System.Web.dll和System.Xml.dll都被復(fù)制到/usr/lib下。接下來,在Linux文本編輯器中輸入下面的內(nèi)容,把文件保存為HelloMono.cs:
{
public static void Main(string[ ] args)
{ System.Console.WriteLine("Hello Mono");
}
}
執(zhí)行下面的命令編譯C#文件:
mcs是Mono的C#命令行編譯器。與MS .NET SDK的csc編譯器相似,mcs也有很多命令行選項(xiàng)。上面的命令將生成可執(zhí)行文件HelloMono.exe。注意這個(gè)執(zhí)行文件不是Linux執(zhí)行文件,而是一個(gè).NET執(zhí)行文件,或者說,這個(gè)文件的可執(zhí)行代碼形式是中間語言(IL,Intermediate Language)。要運(yùn)行這個(gè)執(zhí)行文件,必須執(zhí)行如下命令:
Linux控制臺(tái)上將顯示出"Hello Mono"。關(guān)于mcs和Mono的更多說明,請(qǐng)執(zhí)行man mcs或man mono參考其man文檔。
GUI應(yīng)用
Mono不支持Windows Forms,但在C#編程中可用GTK #編寫GUI。GTK #是GTK+圖形庫的C#支持工具,可從http://gtk-sharp.sourceforge.Net/下載。下載完成后,先要安裝RPM:
解開gtk-sharp-0.2.1.tar.gz:
進(jìn)入子目錄gtk-sharp-0.2.1,執(zhí)行:
make
make install
完成這一步驟之后,重新啟動(dòng)一次。與GTK#有關(guān)的所有動(dòng)態(tài)代碼模塊(gtk-sharp.dll、atk-sharp.dll、gdk-sharp.dll、glib-sharp.dll以及pango-sharp.dll)都會(huì)被復(fù)制到/usr/lib目錄,編譯用GTK#制作GUI的C#程序時(shí),必須通過-r參數(shù)引用它們。GTK#下載包中包含了幾個(gè)示例程序,如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選項(xiàng)引用前面各個(gè).dll動(dòng)態(tài)模塊。執(zhí)行startx命令啟動(dòng)X Window,進(jìn)入終端窗口,再進(jìn)入示例程序所在目錄,執(zhí)行下面的命令分別運(yùn)行各個(gè)程序:
mono Menu.exe
mono ButtonApp.exe
Mono項(xiàng)目還在完善和發(fā)展之中,還沒有移植好全部.NET類。但不管怎樣,它對(duì)許多人來說將是一個(gè)好消息。有關(guān)Mono C#類庫移植進(jìn)展的信息,感興趣的朋友可以訪問www.go-mono.com/class-status.html。
考慮一個(gè)典型的服務(wù)器/客戶機(jī)式.NET應(yīng)用:最終用戶只與客戶端打交道,客戶端最好是方便的GUI應(yīng)用,許多人還會(huì)希望使用熟悉的Windows平臺(tái)。但是,對(duì)于他們來說,服務(wù)器端使用Windows還是Linux完全無關(guān)。所以,服務(wù)器端可以用帶有Mono的Linux構(gòu)造,節(jié)省了配備專用Windows服務(wù)器的投資。Mono也將為應(yīng)用遷移帶來方便。如果Mono能夠順利發(fā)展,Windows開發(fā)者也將能夠?yàn)長(zhǎng)inux或其他非Windows平臺(tái)開發(fā)應(yīng)用。如果這樣的話,不久之后出現(xiàn)一個(gè)類似Visual Studio .NET但免費(fèi)或廉價(jià)的Linux開發(fā)IDE也說不定。
然而,所有這一切是否能夠成為現(xiàn)實(shí),依賴于Mono是否能夠茁壯發(fā)展,也依賴于Mono與Windows平臺(tái)上的.NET框架兼容或相似程度。另外一些因素也很關(guān)鍵,例如Mono的性能、GUI的友好程度等。
希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。
- C#實(shí)現(xiàn)程序開機(jī)啟動(dòng)的方法
- C#實(shí)現(xiàn)將應(yīng)用程序設(shè)置為開機(jī)啟動(dòng)的方法
- C#實(shí)現(xiàn)開機(jī)自動(dòng)啟動(dòng)設(shè)置代碼分享
- C#設(shè)置開機(jī)啟動(dòng)項(xiàng)、取消開機(jī)啟動(dòng)項(xiàng)
- C#代碼設(shè)置開機(jī)啟動(dòng)示例
- c# 開機(jī)啟動(dòng)項(xiàng)的小例子
- C#如何防止程序多次運(yùn)行的技巧
- C#編程中設(shè)置程序只可被運(yùn)行一次的方法
- C#操作注冊(cè)表的方法詳解
- c#讀寫注冊(cè)表示例分享
- C# 注冊(cè)表 操作實(shí)現(xiàn)代碼
- C#操作注冊(cè)表的方法
- C#設(shè)置軟件開機(jī)自動(dòng)運(yùn)行的方法(修改注冊(cè)表)
相關(guān)文章
C#獲取某路徑文件夾中全部圖片或其它指定格式的文件名的實(shí)例方法
在本篇文章里小編給大家整理的是關(guān)于C#獲取某路徑文件夾中全部圖片或其它指定格式的文件名的實(shí)例方法,需要的朋友們參考下。2019-10-10DataGridView設(shè)置單元格的提示內(nèi)容ToolTip
這篇文章介紹了DataGridView設(shè)置單元格提示內(nèi)容ToolTip的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-02-02C# Winform按鈕中圖片實(shí)現(xiàn)左圖右字的效果實(shí)例
這篇文章主要給大家介紹了關(guān)于C# Winform按鈕中圖片實(shí)現(xiàn)左圖右字效果的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11Unity Shader實(shí)現(xiàn)描邊OutLine效果
這篇文章主要為大家詳細(xì)介紹了Unity Shader實(shí)現(xiàn)描邊OutLine效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-01-01C#中DataSet、DataTable、DataRow數(shù)據(jù)的復(fù)制方法
這篇文章介紹了C#中DataSet、DataTable、DataRow數(shù)據(jù)的復(fù)制方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07Unity3D動(dòng)態(tài)對(duì)象優(yōu)化代碼分享
這篇文章主要介紹了Unity3D動(dòng)態(tài)對(duì)象優(yōu)化代碼分享的相關(guān)資料,需要的朋友可以參考下2015-03-03Unity Shader實(shí)現(xiàn)線框效果的制作步驟
最近比較忙,今天抽空給大家分享一篇文章,關(guān)于Unity Shader實(shí)現(xiàn)線框效果,本文給大家分享詳細(xì)制作步驟,通過圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2021-06-06C#實(shí)現(xiàn)字母與ASCII碼互相轉(zhuǎn)換
ASCII是基于拉丁字母的編碼系統(tǒng),也是現(xiàn)今最通用的單字節(jié)編碼系統(tǒng),本文主要為大家詳細(xì)介紹了如何使用C#實(shí)現(xiàn)字母與ASCII碼互轉(zhuǎn),需要的可以參考下2024-01-01