国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

綠色版的Linux.NET——“Jws.Mono”(續)

2019-11-17 01:38:00
字體:
來源:轉載
供稿:網友

綠色版的linux.NET——“Jws.Mono”(續)

在前一篇文章中,我們簡略的介紹了jws.mono的安裝使用,以及我們如何自己動手做一個jws.mono出來。

在文章發表之后的幾天里,我一直覺得有點不妥之處,直到后來猛然的意識到:我們自己動手做的jws.mono雖然可以見到info頁面,但實際上卻是無法掛載任何的.NET站點的。因此這也有必要寫下這篇的續篇來對前面的疏漏進行填補。

馬上進入本節主題,在本節中我們主要講述:

  (1)、分析jws.mono的組成及相關組件的作用

  (2)、此mono非彼mono:bin目錄詳解


1、jws.mono組成及介紹

總的來說,jws.mono包含了兩個部分,jexus以及提供它運行環境的mono。下面是“jws.mono.tar.gz”解壓之后的組成(注:本篇文章針對的是前一篇中下載獲得的jws.mono,其他的可能結構不一樣):

直接開始分析吧,如上圖所示,jws.mono的根目錄包含了四個目錄,它們的作用分別是:

  bin:包含Mono編譯器的可執行文件目錄

  

  etc:包含.NET默認配置文件的目錄(machine.config等)

  jexus:顧名思義,放jexus的目錄

  lib:里面包含了.NET的程序集、我們編譯mono和libgdiplus所得到的so庫文件

目錄以及結構大概就是這樣,各位讀者分別點擊進入相關的目錄之后定會眼前一種熟悉的感覺。

2、bin目錄詳解

點擊進入到bin目錄:

各位讀者如果對比自己手上編譯得出的mono/bin目錄,這里的bin目錄就顯得輕量多了,是的,此處的bin目錄是經過裁剪,僅僅包含了提供.NET運行所需的核心組件,并沒有其他更多的東西。出了mono-sgen,其余均有腳本組成,而dmcs、gmcs以及mcs分別供給FramWork版本為4.0、2.0(3.5)以及4.5的程序的程序調用。

使用VIM打開其中一個腳本文件:

這里面僅包含了一條命令,命令的作用是調用同級目錄下的mono,并指定它的framework版本。

回到文件目錄中,我們再仔細觀察一下文件“mono”的大小(有興趣的讀者可以看看自己編譯的Linux.NET中可執行文件“mono”的大小,相差甚大),大小只有1KB,顯然這個叫“mono”的文件絕不會是編譯器“mono”,只是一個同名的文件而已。我在前文中曾說過,出了mono-sgen以外,其余的均是腳本文件,因此我們仍然可以繼續用Vim打開它:

到了這里,我們已經一目了然了,這個“mono”文件的作用其實就是先設置并載入與Linux.NET運行相關的資源文件(程序集文件、machine.config等),然后把處理交給了“mono-sgen”處理(提示:mono-sgen里面包含了mono的JIT以及Sgen垃圾回收等組件,好東西)。

這一個文件很重要,我們所有的.NET程序的運行都要經過這一個文件,因此如果這個文件里面的參數(目錄之類的)有任何的差錯,都會導致我們的.NET程序無法編譯運行。

再留意“--runtime”這里,在此處,無論你使用的是那個版本的framework庫,其實在jws.mono運行時都是使用framework 4.0(事實上目前流行的CLR主要有2.0和4.0兩個版本,而在mono中CLR 4.0是可以兼容CLR 2.0的庫,MS.NET則不行)。


回到起點,開篇的時候,我提到的那個問題,各位讀者現在知道是什么原因造成的了嗎?


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 夏津县| 溆浦县| 东乡族自治县| 鄂温| 华亭县| 新乡市| 城市| 正镶白旗| 临沂市| 山阳县| 乌兰察布市| 思南县| 班玛县| 靖远县| 洪泽县| 辉南县| 庆云县| 会理县| 安福县| 三河市| 平南县| 密云县| 汤阴县| 涪陵区| 徐水县| 灵川县| 同仁县| 富顺县| 蒙阴县| 绥棱县| 铅山县| 蛟河市| 拜泉县| 兴安盟| 阜康市| 鄂伦春自治旗| 永兴县| 泗洪县| 洪江市| 剑河县| 麟游县|