從標題本身來看很清楚,將應用程序X移植到平臺Y上意味着什麼?通過將應用程序X移植到平臺Y是什麼意思?
說例如我有一個應用程序X在某個操作系統上運行,說Y,我該怎麼做這個應用程序移植到另一個操作系統說Z?
這是否意味着重寫操作系統Z的新應用程序A,它必然會模仿操作系統Y上的應用程序X的行爲。
請解釋。
從標題本身來看很清楚,將應用程序X移植到平臺Y上意味着什麼?通過將應用程序X移植到平臺Y是什麼意思?
說例如我有一個應用程序X在某個操作系統上運行,說Y,我該怎麼做這個應用程序移植到另一個操作系統說Z?
這是否意味着重寫操作系統Z的新應用程序A,它必然會模仿操作系統Y上的應用程序X的行爲。
請解釋。
有沒有一個確切的方法來做到這一點。在某些情況下,完全重寫是必要的。在其他情況下,這可能是編譯不同的操作系統或處理器的問題。它確實取決於應用程序,源平臺和目標平臺。無論什麼作品!
某些程序,你可能只是可以重新編譯一個新的平臺,沒有問題。如果它是一個非常簡單的程序,而不是使用特定於該操作系統的任何東西,那麼您可能會擺脫這種困境。基本上,將源代碼移到另一個操作系統,然後使用編譯器。儘管有特定的代碼,但是您可以使用編譯時標誌或代碼中的常量來使編譯器以不同的方式運行。我對我的C++語法生疏,但我認爲這應該說明我的意思:
#if OS == WINDOWS
root = "C:\\";
#elseif OS == LINUX
root = "/";
#endif
另一種方法是運行程序的虛擬機中,像Java。該虛擬機可以在不同的平臺上工作,並且您的可執行文件應該能夠跨越任何使用它的無縫運行。如果有特定操作系統的代碼,您可能需要做一些重新編譯,但如果您打算從開始到移植,那麼您可能不會擔心這一點。
第三種方法是兩者的結合,如果我沒記錯的話,Firefox的功能是什麼。大多數代碼保持完全一樣,但它使用一個基礎來運行,它專門爲該操作系統編譯,它定義了不同的東西,創建了特定類型的變量,例如nsInt
(從我看過FF一段時間以來代碼,所以我可能是錯的,但我知道預先ns
是他們的約定),您將使用它代替int
,因爲它將專門設計爲跨平臺相同。
當您編譯時,選擇正確的平臺作爲基礎,然後使用該平臺編譯整個程序。
我同意彼得。
「移植」,當通過非技術類型表示時,通常意味着:「我想在上使用X
我的系統 - 我該如何做到這一點?這可能與複製相同的代碼(比如說Java或.Net)和運行它(ta da!)一樣簡單,或者可能與以X
作爲規範的基礎和從頭開始重新構建一樣複雜(每個Peter完全重寫)。
技術用戶的「移植」通常是指將一個功能從一個系統移到另一個系統。它可以是操作系統(OS),框架(例如Java到.Net),技術(例如Flash到JavaScript + CSS + xHTML)...
無論哪種方式,您需要更多信息來提供建議/解。