將應用程序移植到 Linux 的指南
Malcom Zung([email protected]),Linux Application Development Tools,IBM 加拿大有限公司
Brian Thomson([email protected]),Linux Application Development Tools,IBM 加拿大有限公司
2001 年 10 月
IBM 成員 Malcom Zung 與 Brian Thomson 將告訴您為什麼要將應用程序從 Sun Solaris 移植到 Linux,並給出了一些指導、建議和參考資料以提供幫助。文中還介紹了作者的一個方便的在線工具,您可以用這個工具來檢測 API,以了解您的 Solaris 應用程序使用的 API 在 Linux 上的兼容性如何。
隨著 Linux 操作系統的逐漸普及,很多 IT 工作室都在考慮如何將已有的應用程序和開發環境移植到 Linux,這不足為奇。不管您是在考慮將 Linux 作為編寫代碼的另一種可選的部署平台,還是在 Linux 中進行主要的開發工作,移植到 Linux 都不會很難(特別是在您的 UNIX 應用程序按照公共標准編寫的情況下)。在這裡,我們將為那些正在考慮使用 Linux 的人們指點迷津。
我們知道很多人都聽過關於是否移植到 Linux 的爭論,如果您也是這樣,那麼請您直接跳到問題部分,我們將在這一部分開始討論移植過程中的技術細節問題。
為什麼要移植到 Linux?
關於移植到 Linux 有很多頗具說服力的原因,它們都使移植很有吸引力。Linux 的技術和操作特性使它適合很多應用程序,現在可以用到的 2.4 發行版更好地說明了這一點,出自 Linuxcare 的一份白皮書評估了這個版本,其中詳細描述了新的發行版中的技術增強(請參閱本文後面部分的參考資料)。
靈活性
Linux 源代碼可以免費獲得。每個曾經為了調試涉及其他人專有代碼的問題而冥思苦想過的人都知道,如果可以真正親眼看到代碼所進行的工作,那麼調試工作就容易多了。而且,如果您在裡面發現了一個問題,或者想增加一種功能,您就可以修改 Linux,前提是遵守 GNU 通用公共許可證(GNU General Public License)的規定。您不必等到操作系統供應商來為您解決問題。這不只是理論上的優勢。象商業軟件供應商 SAP 這樣的用戶已經選擇了修改 Linux 源代碼的方法,並將這種頗有價值的選擇作為支持 Linux 的理由之一。請在 SAP 的 Linux Technology FAQ 中進一步了解 SAP 是如何利用 Linux 的(請參閱參考資料,那裡有關於此點的一個鏈接,還有下面部分提到的很多資源)。
即便您覺得自己不會利用開放源代碼開發帶來的自由,您還是會從中受益,因為 Linux 能夠運行在多種處理器和配置上,從大型機到 PowerPC、SPARC(TM)、Alpha、PA-RISC 和 Intel 處理器,甚至到個人數字助理和嵌入式系統。Linux 還有完整的 TCP/IP 協議棧,包括帶有路由和防火牆功能的 IP 版本 6。最新版本的 Linux 在內核支持 HTTP 服務器,實現了高性能、邏輯卷管理和群集功能,而這使它能夠處理以前需要超級計算機才能進行的大型計算和搜索。Linux 還支持很多種文件系統,包括具有可恢復性的日志記錄文件系統、具有可靠性的獨立磁盤冗余陣列(Redundant Array of Independent Disks,RAID),還有很多種可選的與其它系統兼容的文件系統。因為 Linux 的開放開發模型使人們能夠添加功能,所以它支持所有這些功能。
穩定性
Linux 在穩定性方面倍受稱譽。在 Gartner Group 發布的一份 OS 評估報告中,Linux 受到的評價是“非常好”,與 RISC UNIX 相同,領先於 Windows NT 和 2000(請參閱參考資料)。
安全性
實踐證明,安全性需要自底向上構建到系統中,這是它的本質之一。試圖在底層不安全的情況下建立安全性,實際上等於幻想惡意用戶會對底層缺陷一無所知 — 這種賭博結果通常會失敗。Linux 安全性是從內核開始構建的,因為實現它的代碼要經過成千上萬的開發者的仔細研究,所以任何缺陷都會在早期被查出。Linux 的網絡安全性是它特別出色的地方,而且 Linux 本身就內建了大范圍的路由和防火牆功能。另一份 Gartner 報告(請參閱參考資料)推薦 Linux 的原因就是它成熟的安全性特點。
可伸縮性
以前,Linux 在支持對稱多處理器(symmetric multiprocessor,SMP)系統的方面落後於商業 UNIX 系統,不過隨著增強了可伸縮性的 2.4 內核的發行,Linux 現在可以穩定地支持四路 SMP 系統,在 Web 服務工作負載的八路 SMP 配置上也取得了很好的成績(詳見 SPECweb99 基准測試報告)。如果使用群集技術,Linux 還可以處理更大的可分區負載任務。大型的 Linux 群集的示例有 Shell 為了進行地理分析而構建的有 1024 個節點的群集器,還有組成 Google 搜索引擎的 8000 多個 Linux 系統(請參閱參考資料)。
適度的資源需求
盡管 Linux 可以利用大內存和高速處理器,但沒有這些條件 Linux 也可以很好地運行。Linux 還可以在 Intel 486 處理器上運行。在用於服務器的情況下,Linux 可以配置為不自動啟動 X 服務器,這樣就可以節約 GUI(graphical user interface,圖形用戶界面)系統需要的大量資源。
企業就緒性
通常,最具說服力的是事實,而不是分析。您可以通過研究使用 Linux 構建中樞系統的公司來評判 Linux 的商業就緒性(請參閱參考資料)。
費用
盡管“自由軟件”倡導者提醒我們,“自由”是指使用自由而非沒有代價,但使用 Linux 不會給預算帶來很大壓力。您可以用低廉的價格獲得 Linux,復制不受既定許可證的限制,也不需支付使用費,而且它附帶了一套服務器應用程序和開發工具,這些在其它系統中可能都是需要付費的附件。另外,產品豐富的開放源代碼開發社區在不斷地開發和發布各類 Linux 軟件包,您可以免費(或支付少量費用)獲取它們。舊金山的 Bay Area Rapid Transit 系統使用 Linux 作為其 24 小時火車控制工作站,因為選擇了 Linux,他們大約節省了 15% 到 20% 的項目預算。
技術和支持服務可用性
隨著 Linux 日益普及,更多公司(如 IBM、Linuxcare、RedHat 和 SuSE)開始提供 Linux 支持服務,包括教育、用戶分級和系統管理支持以及開發服務。因為 Linux 在學校中很受歡迎,所以很多新畢業的學生都使用過 Linux。您幾乎可以在任何城市的 Linux 用戶組中找到該地區能夠熟練應用 Linux 的人,而 Web 站點和因特網新聞組仍然是 Linux 使用指南信息和非正式技術咨詢的一種寶貴而有效的來源。
市場增長
如果您正在開發要再次銷售的軟件,您可能會有興趣知道下面的信息 — IDC 估計 Linux 服務器銷量到 2004 年將增長 28% 以上(請參閱參考資料)。實際部署的系統的增長率很難估計,可能會更高,因為一套 CD 裝或下載的 Linux 都可以合法地安裝在很多台機器上。
開發系統的可訪問性
Linux 的代碼可以在低端商業機器上開發,然後在更大型的系統的特性開始對實現產生影響的時候再遷移到這些更大型的服務器上。Open Source Development Lab 為開放源代碼項目提供了對高端 Linux 系統的訪問,這些項目將 Linux 擴展到企業級或相關的應用上。與此類似,IBM 的 Linux Community Development System 是這樣一種服務,它允許符合要求的申請者訪問它自己運行在 IBM 大型機上的 Linux 系統(請參閱參考資料)。
其它人的看法
新聞界和因特網上都有無數文章為那些正在考慮移植到 Linux 的人們提供了其它深入的分析。下面是一個小例子:
“我們使用這個軟件在非常短的時間內用很小的開銷設置、安裝和配置一個功能性 UNIX 系統,這就是 Linux 必須向企業環境提供的。”— Gavin Sherry,Linux and the Enterprise。
“正確的價值取向應該是,能夠編寫應用程序而不用總是擔心系統的結構,或者說系統的體系結構。Linux 因為具有如此開放和標准的特點,所以可以在從手表到超級計算機的每一台機器上運行。”— Sam Palmisano,LinuxWorld 2001 上的發言。
問題
一旦您認定移植到 Linux 有吸引力 — 因為減少的開銷、可用的技術、增加的供應商選擇,或是快速增長的市場帶來的吸引力 — 您就還需要了解其中潛在的代價和風險,以及您如何才能減輕這些影響。下面是一個清單,列出了詢問的問題以及相應的回答。
遷移會不會需要一大筆初始投入資金?
當您在考慮將軟件開發從一個平台轉到另一個平台上時,您是否預先想過這個長期的項目將停止您所有其它的新工作,並占用您整個小組的人力,而且還需要一大筆資金投入和重新培訓的費用呢?您是否希望這個項目要麼取得巨大價值,要麼全無價值,也就是說一旦開始,只能去完成它,否則全盤放棄?在考慮到這些情況時,沒有幾個項目經理會繼續支持這個項目。他們都會正確地分析這個問題,只有您耐心地堅持下去,才可能看到這種長期的項目帶來的利潤。
幸運的是,從 Solaris 移植到 Linux 並不一定會出現這些問題,而且的確有可能(多數情況下都很值得)避免“大手筆投資”的方法。在本文的遷移指南部分,我們描述了如何按部就班地進行遷移工作,將開銷均勻分布並減少風險,因為中間點是不變的(您可以隨意停留在每個點上)。這意味著您可以獨立地提交每個步驟,並在每次提交後重新評估優先權和目標。這樣就更容易控制對您企業造成的風險和影響了。
開銷會有多少,還有會花費多長時間?
只有對應用程序進行全面的遷移評估,才能回答這個問題。其中包括下面幾個相關的因素:
編譯器語言
代碼中與硬件相關的因素(如字長或字節尾附屬物)
平台運行時服務
構建工具附屬物
可用的數據庫、聯網條件和消息傳遞中間件
用戶界面可移植性
測試案例和測試環境
移植工作的規模和復雜性將與系統和環境相關的代碼直接成正比。如果應用程序只使用標准語言構件和標准庫,而且並不一定要在 SPARC 處理器上的 Solaris 下運行,那麼移植就相對容易一點。舉例來說,Java 應用程序通常就屬於這個范疇。另一方面,如果應用程序是不使用 Solaris 上的 POSIX 服務的 C 程序,或者依賴於 Linux 上沒有的第三方產品,那麼移植工作就困難多了。
請參閱遷移指南進一步了解遷移工作的評估。還有,本文的遷移工具和外包部分為您介紹了一些專家,他們可以幫助您評估應用程序的可移植性。
我的應用程序可以繼續在 Solaris 上運行嗎?
如果您不希望在 Linux 和 Solaris 之間進行選擇的話,就不要選擇!當您移植應用程序時,很多情況下您都是在將不可移植的方法和附屬物替換成可移植性更好的東西。您會將 Solaris 構建工具替換成 GNU 工具,並使用與 POSIX 相容的線程庫代替 Solaris 中對應的庫。因為這些工具和接口在 Solaris 上也能找到,所以您可以繼續自由地使用 Solaris,甚至在將開發平台移植到 Linux 之後繼續把握 Solaris 市場。
遷移指南
下面這種直截了當的方法將允許您的開發小組逐步地進行從 Solaris 到 Linux 的轉變。您可以將移植工作與主要開發工作一同進行,從而盡可能減少中斷。如果實行得恰當,您的應用程序在遷移過程結束時將能夠一樣很好地適用於 Linux 和 Solaris。
多數語言的 Linux 操作系統、構建工具和編譯器都可以免費獲取,您可以從因特網下載它們。您只需要提供硬件和開發人員,就可以開始移植了。
對於 C 和 C++ 應用程序來說,我們建議在步驟 1 中繼續運行 Solaris,同時轉到 Linux 開發工具。這種方法允許您更細地逐步轉換。您可以選擇進行步驟 2,在這個中間階段繼續在 Sun 硬件上運行,同時慢慢熟悉 Linux 操作系統。最後,步驟 3 會將應用程序從 Sun 硬件中脫離出來。
如果是移植 Java 應用程序,您可以直接進行步驟 3 — 一般的 Java 應用程序很少或根本不依賴於底層機器硬件。如果是移植 Fortran 應用程序,您也可以直接進行步驟 3。
步驟 1:在 Solaris 上用 GNU 工具(GCC/gmake)構建 C/C++ 應用程序
下面的參考資料將有助於您執行這個步驟:
Sunfreeware.com 的 Solaris GNU 工具
Make 工具文檔
GNU make
Sun make
編譯器文檔
GCC
Sun C, Sun C++
GCC(GNU Compiler Collection)工具套裝包括一個 C 編譯器和一個 C++ 編譯器。因為 Solaris 和 Linux 中都有 GNU 編譯器和 make 實用程序,所以要用這些工具開始構建應用程序相對來說比較容易。首先,請您用上面的鏈接下載 GNU 工具,並將它們安裝在 Solaris 上。然後,請您試著用 GNU gmake 實用程序(而不是 Solaris make 實用程序)來構建應用程序。因為 GNU gmake 實用程序與 Solaris make 實用程序有所不同,所以根據您的 make 文件中使用的構件,您會碰到 GNU gmake 實用程序生成的一些錯誤消息。請使用上面的 make 工具文檔鏈接來幫您識別 make 文件中的問題區域,並相應地調整 make 文件。
一旦您將 make 文件修改為使用 gmake,請在 make 文件中將被調用的 C 編譯器的名稱從 cc 改為 gcc,並將 C++ 編譯器的名稱從 CC 改為 g++。然後重新構建應用程序。您在構建過程中會碰到的錯誤消息(如果存在的話)可以分為兩類:命令行選項問題和代碼問題。請辨別出那些由於 GNU 和 Sun 編譯器接受的命令行選項中有所區別而產生的消息。除了少數幾個基本選項(如“-c”和“-g”)之外,編譯器接受的多數選項都不同。Red Hat 的 Solaris-to-Linux Porting Guide 提供了對這些區別的一個很好的總結。請使用上面的編譯器文檔鏈接來修改您的 make 文件,以彌補編譯器選項中有區別的不足。
下面,您就可以處理剩下與代碼相關的錯誤消息和警告信息了。處理這些消息的一種簡單的方法是將它們捕獲在一個文件中,並挨個檢查。請使用上面的編譯器文檔鏈接來了解和處理編譯器之間不同的問題。本文的遷移工具和外包部分給出了一個公司列表,這些公司可以幫助您在應用程序中解決那些由於編譯器不同而產生的問題。
在移植到 Linux 和將應用程序鏈接到開放源代碼庫時,請注意與這些庫相關的許可證和版權。您新移植的 C/C++ 應用程序至少將被鏈接到 GNU C/C++ 運行時庫。這些庫受 GNU“copyleft”許可證的保護。如果您正在移植的軟件有專有屬性,而且您打算在用 GNU 工具構建該軟件之後馬上出售它,那麼您最好謹慎地全面理解 GNU 通用公共許可證和 GNU 次通用公共許可證(請參閱參考資料)中規定的條款和條件。一旦您的軟件被鏈接到由這些許可證保護的庫上,GNU 許可證中的某些條款和條件就將沿用到您的軟件上。
步驟 2:(可選的)在 SPARC 的 Linux 上構建和測試應用程序
下面的資源將有助於您執行這個步驟:
SPARC 的 SuSE Linux(出版社發行版)
UltraSPARC(TM) 平台的 Linux
有一種不常見的情況,那就是被移植的應用程序有對 SPARC 硬件特定的附屬物,這時步驟 2 就變成移植過程中重要的中間階段了。它使 Solaris 開發者能夠在不放棄底層 SPARC 硬件和不修改應用程序中特定於 SPARC 的部分的前提下熟悉 Linux 環境。
請通過上面的鏈接之一來獲取可以在您的 Sun 硬件上運行的 Linux 版本。然後安裝操作系統,使用所提供的 GNU 工具重新構建應用程序。因為您在步驟 1 中使用 GCC 構建了應用程序,所以在步驟 2 中將碰到的區別將被限制到 Solaris 和 Linux 之間的運行時應用程序編程接口(application programming interface,API)的區別。請參閱運行時接口部分以進一步了解關於這些區別的信息。如果需要,請對應用程序作出調整。一旦應用程序完全被重新構建,請對其實施一個完整的有效性測試。
步驟 3:在 Linux 上為其它硬件構建和測試應用程序
下面的資源將有助於您執行這個步驟:
Red Hat
SuSE
Turbolinux
在遷移過程的最後一個步驟中,首先請獲取並在您選擇的目標硬件上安裝 Linux。可以直接使用 Linux 的服務器有 IBM 基於 Intel-IA32 的產品系列(包括 NetVista、IntelliStation、Netfinity)和新的 IBM eServer xSeries。IBM pSeries 和 zSeries 也可以使用 Linux(請參閱參考資料)。您可以低價購得或免費下載流行的用於 Intel/x86 的 Red Hat Linux 分發版,而且它在幾乎任何一台基於 Intel 的 PC 機上都很容易安裝和設置。SuSE 提供支持 IBM pSeries 和 zSeries 的 Linux 分發版。還有,您一定要安裝將使用的編譯器和工具。
下面,請將原始樹(source tree)和 make 文件復制到新的 Linux 機器,然後重新構建應用程序。如果您沒有完成步驟 2,那麼您就可能需要修改應用程序使其適應 Solaris 和 Linux 之間運行時 API 中的區別。請參閱運行時接口部分以了解其它信息。最後,如果應用程序包含任何特定於 SPARC 的代碼,請按所需進行修改,來解決這幾部分代碼中的問題。在項目結束前,對移植的應用程序進行一套整體的驗證測試。
Java 應用程序
將用 Java 編寫的應用程序開發過程從 Solaris 轉到 Linux 非常簡單。Solaris SPARC/x86 和 Linux x86 都可以使用 Sun 的 Java 2 Platform 標准版。對於那些目前正在使用 Sun 的 Forte(TM) for Java Community Edition 集成開發環境(integrateddevelopment environment,IDE)而且還將繼續使用下去的開發者來說,在 Linux 中也可以使用這個 IDE,而且可以免費下載。
IBM 還提供了 Java 2 Developer Kit for Linux(請參閱參考資料),它包括一個重新設計過的 Java 虛擬機(Java Virtual Machine,JVM),該虛擬機增強了即時編譯功能。另外,IBM 倍受稱譽的 VisualAge for Java IDE 在 Linux 中也可以使用。它的入門版是免費的,您可以從 VisualAge Developer Domain Web 站點(請參閱參考資料)下載。
GCC 工具套裝中包括一個 Java 編譯器(GCJ),它可以將 Java 源文件編譯為類文件(字節碼),或者直接編譯為本地機器碼。
因為不管 JVM 運行在什麼操作系統上,它都將接受相同的字節碼,所以您可以選擇在一個操作系統上編譯 Java 源文件,然後在另一個操作系統上運行編譯得到的類文件。舉例來說,如果 Linux 是您主要的開發平台,那麼您在 Linux 上創建的 Java 類文件在 Solaris 或其它可以使用兼容 JVM 的平台上也可能一樣運行良好(請參閱參考資料)。
Fortran 應用程序
如果您的 Solaris Fortran 應用程序與 f77 一致,那麼您就可以使用 GCC Fortran 77(g77)編譯器(請參閱參考資料)來編譯應用程序。GNU Compiler Collection 套裝包括 g77 編譯器。
如果您的應用程序目前是用 Sun 的 f90/f95 編譯器構建的,那麼您就需要購買一個商業 Fortran 編譯器。您可以通過下面的資源來獲取 Fortran 90/95 Linux 工具:
來自 Absoft Development Tools 的 Pro Fortran 7.0(ANSI/ISO Fortran 95)編譯器和調試器
來自 The Portland Group 的 F77、F90 和 HPF 編譯器、調試器以及分析器
來自 Veridian System 的 VAST/f90 Fortran 編譯器
運行時接口
盡管大多數運行時接口在 Linux 和 Solaris 上都是通用的,有一些地方還是有區別存在。如果您的應用程序利用 Solaris 上可用的接口做了任何工作,而該接口在 Linux 上不可用,或者說在 Linux 上可用的不是同一個接口,那麼就要對這種使用作出修改才能正確地構建應用程序。下面列出了不同之處。
系統調用和 C 庫
Solaris 內核提供邏輯卷支持、文件的 ACL(access control list,訪問控制列表)管理和系統審計日志功能。對於這種功能,可用的 Linux API 與 Solaris 上的 API 有所不同。Linux 上缺省條件下不支持的還有 STREAMS。我們需要對使用 STREAMS 進行聯網的應用程序作出修改,才能使用 POSIX 套接字作為替代。
還有,Linux 上可用的很多 Solaris API 都有不同的返回和參數類型,或者在不同的頭文件中聲明。然而,這些區別通常都是次要的,一般不需要在應用程序中對代碼作出改動。
檢測 API 在 Linux 上的兼容性
如果您想得到一份說明 Solaris 應用程序使用的特定 API 與 Linux 的兼容程度的報告,那麼請使用 developerWorks 的從 Solaris 到 Linux 的移植工具。
C++ 庫
Solaris Forte 6 C++ Compiler 包括三個類庫:-compat=4 的復數、經典 io 流和標准 C++ 庫(它包括標准復數和 io 流)。GCC 只包括標准的 C++ 庫。如果被移植的應用程序使用 -compat=4 復數庫或經典 io 流庫,那麼您就需要修改應用程序,以使用標准 C++ 庫中包含的這些庫的標准版。這樣修改還有其它好處,那就是能夠改進應用程序的可移植性。
數學庫
Solaris 數學庫包括 ASCII 編碼十進制數的轉換函數。Linux 數學庫中沒有這種功能。
X 庫和視窗管理器
X11R6 X Server 和 Xlib、Xt 一樣,在 Linux 上都可以使用。Motif 可以從 The Open Group(請參閱參考資料)以 Open Motif 的形式獲得,它在 Linux 上還是免費發布的。在 Linux 中,人們經常用 LessTif(請參閱參考資料)來代替 Motif,它實際上是開放源代碼 Motif 的克隆版本。
桌面:CDE 對 GNOME/KDE
通用桌面環境(Common Desktop Environment,CDE)是缺省的 Solaris 桌面,它並不包括在通用的 Linux 發行版中。對於需要 CDE 的應用程序和更喜歡這種特殊的圖形用戶界面(graphical user interface,GUI)環境的用戶來說,可以從 Xi Graphics(請參閱參考資料)以他們的 DeXtop 產品的形式獲得 CDE 的 Linux 版本。在 Linux 上運行 DeXtop 使 Solaris 用戶處於熟悉的 GUI 環境中,這能夠使移植到 Linux 引起的轉換輕松很多。
DeXtop 要求 Accelerated-X Linux X-Server 同樣來自 Xi Graphics。盡管 XFree86 Linux X-Server 可以設計為能使用 DeXtop,但 Xi Graphics 並不提供對在 XFree86 上運行 DeXtop 的官方支持。
線程/LWP(Light Weight Process,輕量級進程)支持
Solaris 支持 POSIX 線程和特定於 Solaris 的線程模型。如果被移植的應用程序使用特定於 Solaris 的線程 API,那麼您最好將應用程序修改為使用 POSIX 線程。Linux 上支持 POSIX 線程,而且它更具可移植性。
對於要移植到 Linux/Alpha 的人們來說,另一種選擇是使用由 Compaq 開發的與 Solaris 兼容的 Threads Library for Linux/Alpha。您可以在 Compaq 的 Linux Affinity Web 頁(請參閱參考資料)了解關於這個開放源代碼包的詳細信息。
進程管理:/proc 文件系統
/proc 偽文件系統為訪問內核數據結構提供了一種便捷的方法。在 Solaris 上,/proc 包含關於活動進程和線程的信息,並提供控制這些進程和線程的接口。Solaris 上的 /proc 控制接口一般由調試者用來跟蹤程序執行情況。在 Linux 上,/proc 並不提供進程控制接口。要控制進程以便在 Linux 上進行調試,請使用 ptrace() API 代替 /proc。
其它注意事項
系統管理
總的來說,管理 Linux 與管理任何其它 UNIX 操作系統都幾乎一樣。在某些具體的命令和任務上有一些區別,IBM 和 UNIXGuide 已經發布了比較圖,總結了這些區別,其中不僅包括 Solaris 和 Linux 之間的區別,還包括 AIX 和其它版本的 UNIX 之間的區別(請參閱參考資料)。有經驗的 Solaris 系統管理員不必花費太大氣力就能夠完全適應 Linux。
源代碼管理
對於目前正在使用 Solaris 上的 Sun Forte TeamWare 或者 SCCS(Source Code Control System,源代碼控制系統)並希望繼續使用 SCCS 這種風格的源代碼管理系統的開發者來說,他們可以試著使用 GNU CSSC(Compatibly Stupid Source Control),開放源代碼 SCCS 的克隆版本。CVS(Concurrent Versions System,並發版本系統,請參閱參考資料)是 Linux 上更常用而且倍受推崇的源代碼管理系統。
Solaris 和 Red Hat Linux 還可以使用 Rational ClearCase 軟件配置管理解決方案(請參閱參考資料)。
其它第三方工具、實用程序和庫
Solaris 上有很多常見、流行的第三方工具、實用程序和庫,它們都可以在 Linux 上使用。鑒於 Linux 的日益普及,支持 Linux 的第三方供應商的數目每天都在增長(請參閱參考資料):
Rational Rose 和其它 Rational 產品在 Solaris 和 Linux 上都可以使用。
與 GCC 可在 Solaris 和 Linux 上使用一樣,Rogue Wave SourcePro C++ 庫可以在 Forte/Solaris 上使用。
Trolltech Qt C++ GUI 框架在 Solaris 和 Linux 上都可以使用。
64 位計算
Red Hat 和很多其它發行商為 Compaq/DEC Alpha 提供了一種 64 位版的 Linux。您可以在 AlphaLinux Web 站點上了解關於這種 Linux 的其它信息。64 位的 Solaris 和 64 位的 Linux/Alpha 都使用 LP64 數據模型,它能夠帶來很好的兼容性。
不久,Intel Itanium(TM) IA-64 處理器也能使用一種 64 位版的 Linux。您可以在 IA-64 Linux Project Web 站點了解關於這種 Linux 的更多信息。一種支持 IBM 64 位 PowerPC 體系結構的 Linux 也在開發之中。
請注意,盡管 SuSE Linux/UltraSPARC 的內核運行在 64 位的模式中,但 SuSE Linux/UltraSPARC 目前並不支持 64 位的用戶空間應用程序。
端(Endian)格式
Sun SPARC 和 UltraSPARC 處理器以大端(Big Endian)格式存儲整數。如果您希望將應用程序移植到小端(Little Endian)版本的 Linux(如 Linux/Intel)上,那麼您就必須解決應用程序中任何與端格式有關的問題,應用程序才能夠正確運行。您也可以選擇讓應用程序使用 Linux/PowerPC、Linux/zSeries 或 Linux/SPARC,它們都是 Linux/Intel 之外的大端平台。
教育
喜歡自學的人們可以在因特網上找到很多 Linux 信息。其中有兩個不同起點都很好,那就是 IBM 的 developerWorks Linux 專區上的教程和 IBM 的 Linux、UNIX 和開放源代碼課程目錄,其中包括基於 Web 的 Linux、UNIX 和開放源代碼項目的課程。課程目錄包括 Linux 介紹,Linux 上的 DB2、zSeries 和 S/390 上的 Linux、Perl 以及開放源代碼。您還可以找到 Linux Professional Institute 證書和 Red Hat 證書課程,以及課程向導,還可以找到課程顧問,他可以幫助您根據您需要的技術來選擇課程。
遷移工具和外包
MigraTEC 這家公司專門開發在平台之間遷移應用程序的工具。MigraTEC 的移植工具套裝包括 Migration WorkBench,它可以在您的應用程序中找出在移植過程中可能需要修改的特定代碼部分。WorkBench 還包括一個完整的從 Solaris 到 Linux 的 API 映射,工具可以用它來檢測應用程序調用的 Solaris API 與 Linux 的兼容性。
ParaSoft 的自動 C/C++ 編碼標准執行工具名為 CodeWizard,它現在包括一個被稱為 RuleWizard 的功能,該功能允許用戶創建定制編碼規則。您可以使用 CodeWizard 和 RuleWizard 來創建定制內部工具來協助遷移工作,並維護可移植性。
對於希望外包整個遷移工作的那些人來說,他們可以與 IBM Global Services、MigraTEC 和 Sector7 這樣的公司簽訂和約,讓這些公司來完成整個移植任務。IBM Global Services 最近建立了一種全面的 Linux 服務業務,包括遷移、顧問、規劃、教育和支持。
參考資料
請在 Linuxcare 的一份資料中了解 Linux 2.4 的技術增強。
GNU General Public License 和 GNU Lesser General Public License 讓任何人都可以查看和改進 Linux 源代碼。
請在 SAP 的 Linux 技術常見問題解答了解 SAP 是如何利用 Linux 的。
Linux 可以在很多系統上運行,從大型機一直到個人數字助理和嵌入式系統。
Gartner Group 在一份 OS 評估報告中對 Linux 的評價是“非常好”。
這份 Gartner 報告推薦 Linux 的原因是 Linux 具有成熟的安全性。
請看看有多少使用 Linux 構建中樞系統的公司,以此評判 Linux 的商業就緒性。
Linux 的八路 SMP 配置在 SPECweb99 中的結果非常好。
大型 Linux 群集器有 Shell 構建的 1024 個節點的群集器,還有 8000 個節點的 Google 搜索引擎。
請看看 Bay Area Rapid Transit 系統是如何使用 Linux 節省項目費用的。
據 IDC 估計,Linux 服務器銷量到 2004 年將增長 28% 以上。
開發者們可以從 Open Source Development Lab 和 IBM 的 Linux Community Development System 訪問高端 Linux 系統。
請在 IBMeServer 開發者園地進一步了解 Linux 在 IBM xSeries、pSeries 和 zSeries 上的情況。
Java 工具有 Sun 的 Java 2 Platform 標准版和 Forte(TM) for Java Community Edition IDE,還有 IBM Developer Kit for Linux 和 VisualAge for Java IDE 等。
請從 VisualAge 開發者園地 Web 站點下載 IBM 的各種 VisualAge 工具。
GCC 套裝還包括一個 Java 編譯器(GCJ)。
您可以從 GCC(g77)、Absoft Development Tools、The Portland Group 和 Veridian Systems 獲取 Fortran 編譯器。
Linux 視窗工具包中包括 Open Motif 和 LessTif。
Xi Graphics 為 Linux 開發了一個 CDE。
Compaq 的 Linux Affinity Web 頁描述了一種與 Solaris 兼容的 Linux 線程庫。
請參閱由 IBM 發布的和由 UNIXguide 發布的系統管理任務比較圖。
源代碼管理系統有 GNU CSSC 和 CVS。
來自 Rational 的 Linux 產品有 Rational Rose 和 Rational ClearCase。
Linux 的第三方運行時庫有 Rogue Wave SourcePro C++ 庫和 Trolltech Qt C++ GUI 框架。
請在 AlphaLinux 和 IA-64 Linux Project Web 站點查找關於 64 位 Linux 的信息。
要了解 Linux 教育信息,請浏覽兩個不同的站點,那就是 IBM 的 developerWorks Linux 專區上的教程和 IBM 的 Linux、UNIX 和開放源代碼課程目錄。
您可以從 IBM Global Services、MigraTEC 和 Sector7 獲得遷移服務。ParaSoft 的 CodeWizard 工具也可以用來協助遷移工作。
請在 developerWorks Linux 專區上兩星期一次的“LTC 公告”中和 Linuxat IBM Web 站點上進一步了解 IBM 在 Linux 方面的進展如何。
請在 developerWorks 上浏覽更多 Linux 參考資料。
請在 developerWorks 上浏覽更多開放源代碼參考資料。
關於作者
Malcom Zung 目前的工作是推廣 Linux 上的應用程序開發。Malcom 參與的其它項目還包括 IBM Distributed Debugger 和 IBM C Compiler。Malcom 的工作地點位於安大略省馬克姆鎮的 IBM 加拿大實驗室。您可以通過 [email protected] 與 Malcom 聯系。
Brian Thomson 負責領導在 IBM 全球推廣 Linux 上的應用程序開發。Brian 以前擔任過 IBM 應用程序開發部門很多項目的首席設計師。Brian 的工作地點位於安大略省馬克姆鎮的 IBM 加拿大實驗室。您可以通過 [email protected] 與 Brian 聯系。