我已經seen this question了,我想知道是否有任何技術理由可以證明gcc支持Java但不支持C#.如果我理解,Java也是一種解釋性語言.如果Mono提供C#編譯器和CIL的實現,為什么不能創建一個將C#轉換為IL然后靜態編譯的gcc c#編譯器?
解決方法:
如果編譯器工具鏈不支持特定語言,那通常是因為目前對該語言沒有足夠的興趣.所以,這本身并不是技術上的原因 – 只是因為他們現在不想浪費開發人員的時間.
理論上,C#在理論上不能作為靜態編譯語言實現,這沒有特別的技術原因.然而,在實踐中,泛型是C#的核心優勢之一,但不幸的是,由于泛型在這種特定語言中的工作方式,它們的任何有效實現通常都會從JIT編譯器的存在中獲益良多.在C#中定義泛型類型時,可以有效地獲取所有具體類型的機器代碼,其中類型參數是類,每個使用的結構類型都有一個機器代碼.但是,當您嘗試跨另一個二進制文件創建新的具體類型時,您最有可能創建這些類型參數所需的新機器代碼片段是一個JIT編譯器.
如果您對使用C#創建靜態鏈接程序感興趣(而不是專門用于gcc),那么Mono確實提供了一個工具(我認為稱為mkbundle),它允許您從C#代碼創建完全獨立的二進制文件.
標簽:c,gcc
來源: https://codeday.me/bug/20190717/1490460.html