介紹
您知道 Linux®現在已是世界第二的服務器操作系統嗎?今天,您的應用程序在 Linux 上運行嗎?如果不是,那麼本文將給您些提示和技巧,在您把應用程序移植到 Linux 的時候為您提供指導。本文依據的是軟件工程師的經驗,這些工程師來自獨立軟件供應商(Independent Software Vendors,ISV)和全世界的IBM®實驗室,他們參與了許多把應用程序移植到 Linux 的項目。
首先我們描述 Linux 的特征和它在開發和管理應用程序中的具體價值。接著,我們將回顧重要問題,給出包含移植的主要步驟的移植指南。最後,我們以 IBM ~ zSeries™ 為例,為您演示從一個 Linux 平台移植到另一個平台是多麼的容易。(zSeries 這個詞指 S/390®和 zSeries。)
Linux 的特征和價值
開放性意味著應用程序靈活性:Linux 是真正的開放系統,這使應用程序的可移植性成為現實。在很多情況下,一次簡單的重編譯就能把應用程序帶入 Linux。在優化您的開發和部署平台時,這種快速移植給您真正的靈活性。
多種硬件支持意味著平台靈活性:Linux 幾乎可在所有已知的處理器上運行,無論是 RISC 還是 CISC,32 位還是 64 位。它涵蓋全部類型的計算機,從大型機服務器(IBM ~ zSeries)到 PowerPC®、Sun®UltraSPARC、Alpha、PA-RISC 和 Intel 處理器,往下還有個人數字助理和嵌入式系統。特別是所有的 IBM ~ 品牌服務器都支持 Linux。
源代碼的可用性意味著自己動手的靈活性:與多數以二進制形式發行的商業軟件不同,Linux 內核的源代碼是可以獲得的。您可以拿到源代碼,然後修改和重編譯它,以滿足您的特定要求。調試和解決問題或增加新的特性不再依賴任何供應商。您可以自己作出需要的更改,只要它們符合 GNU General Public License 的規定。
嚴肅的設計意味著安全性:Linux 安全性是從內核上構建的,由於實現它的代碼要接受成千上萬的開發者的檢驗,所以弱點會被及早地發現。Linux 中建有許多路由和防火牆功能。
流行意味著存在技能:因為 Linux 在大學和學院中流行,所以多數新的畢業生有 Linux 經驗。您幾乎可以在任何城市的 Linux 用戶組中找到該地區能夠熟練應用 Linux 的人,而 Web 站點和因特網新聞組仍然是 Linux 使用指南信息和非正式技術咨詢的一種寶貴而有效的來源。
開始前需考慮的重要問題
移植到 Linux 可能是容易的、簡單的和直接的,特別是當您的 UNIX®應用程序的編寫遵循公共的開放的標准。如果您認為移植到 Linux 是有吸引力的,那麼您需要分析移植中涉及的潛在花費和風險及減小它們的方法。
遷移會涉及巨額初始投資嗎?
成本 ― 移植將涉及巨大的時間、人員和金錢的初期投入嗎?該項目會凍結所有的其它新工作並消耗整個團隊的資源嗎?需要提前支付大量資金費用和再培訓費用嗎?這是不是冒著極大風險的提議:一旦開始,要麼完成,要麼完全失敗?
移植到 Linux 是可管理的 ― 本文的移植指南部分講述怎樣一步一步地移植而每個中間步驟本身是穩定的。這使您能根據您的優先級管理成本、人員和項目。這意味著您可以獨立完成每一步,在完成每步後重新估計您的優先級和目標。這樣的結果是風險更容易被控制而給您的公司帶來的影響更小。
成本有多大?需要花多少時間?
花費的時間和金錢 ― 根據和移植有關的因素,全面估計您的應用程序:
編譯器的差異;
您的代碼中與硬件相關的構造(例如字的長度或字節順序的相關性);
平台運行時服務;
構建工具的相關性;
數據庫、聯網和消息傳遞中間件的可用性;
用戶界面的可移植性;
測試案例和測試環境。
移植的工作量和復雜程度直接和依賴系統和環境的代碼的多少成正比。如果您的應用程序只用標准的語言構造和標准的庫,那麼移植起來相對容易些。例如, Java®應用程序常常屬於這一類。反之,如果您的應用程序是一個 C 程序,其中用到 Solaris 上不符合 POSIX 的服務或依賴在 Linux 上沒有的第三方產品,那麼移植難度將大大增加。通常,系統測試、配置的測試和軟件的安裝是重要步驟並且是移植的主要部分。
我的應用程序還能在原來的 UNIX 平台上運行嗎?
緩解 ― 即使把開發轉移到 Linux 後,您仍可以保持原來的平台選擇,以滿足您的其它市場。移植到 Linux 通常意味著構建工具被 GNU 工具替代,平台相關的線程庫被符合 POSIX 的替代。在其它 UNIX 平台上,GNU 工具和庫都能用,使您能同時兼顧您原來的平台和 Linux。
C 和 C++ 應用程序的移植指南
以下技術討論來自 Solaris to Linux porting guide(1)(ibm.com/developerworks/linux/library/l-solar/),這些討論也可被用於其它主流 UNIX 系統。
Linux 操作系統、構建工具和多數語言的編譯器可免費獲得並可從因特網上下載。為了開始移植,您將需要提供硬件和開發人員:
第1步 ― 下載所需的開發工具和 Linux 分發版。
第2步 ― 改用 Linux 開發工具但仍然運行 Solaris。這種方法使得轉變更平緩。
第3步 ― 熟悉 Linux 操作系統但仍舊在 Sun 硬件上運行。
第4步 ― 把應用程序移到目標 Linux 平台。
第1步:下載
以下列出的是所需的編譯器、構建工具和相關的在線文檔鏈接:
GCC(GNU Compiler Collection)工具套件包含一個 C 編譯器和一個 C++ 編譯器
gcc.gnu.org/releases.html