將Solaris移植到Linux上
如果應用程序只使用標準語言構件和標準庫,而且并不一定要在SPARC處理器上的SolarisS下運行,那么移植就相對容易一點。舉例來說, Java 應用程序通常就屬于這個范疇。另一方面,如果應用程序不使用Solaris上的POSIX服務的C程序,或者依賴于Linux上沒有的第三方產品,那么移 植工作就困難多了。當移植應用程序時,很多情況下都是在將不可移植的方法和附屬物替換成可移植性更好的東西。您會將Solaris構建工具替換成GNU工 具,并使用與POSIX相容的線程庫代替Solaris中對應的庫。因為這些工具和接口在Solaris上也能找到,所以您可以繼續自由地使用 Solaris,甚至在將開發平臺移植到Linux之后繼續把握Solaris市場。
一、在Solaris上用GNU構建C/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”)之外,編譯器接受的多數選項都不同。
下面,就可以處理剩下與代碼相關的錯誤消息和警告信息了。處理這些消息的一種簡單的方法是將它們捕獲在一個文件中,并逐個檢查。請使用上面的編 譯器文檔鏈接來了解和處理編譯器之間不同的問題。在移植到Linux和將應用程序鏈接到開放源代碼庫時,請注意與這些庫相關的許可證和版權。新移植的 C/C++應用程序至少將被鏈接到GNU C/C++運行時庫,這些庫受GNU“copyleft”許可證的保護。如果正在移植的軟件有專有屬性,而且您打算在用GNU工具構建該軟件之后馬上出售 它,那么最好謹慎地全面理解GNU通用公共許可證和GNU次通用公共許可證中規定的條款和條件。一旦軟件被鏈接到由這些許可證保護的庫上,GNU許可證中 的某些條款和條件就將沿用到您的軟件上。
二、在Linux上構建并測試應用程序
有一種不常見的情況,那就是被移植的應用程序有對SPARC硬件特定的附屬物,這時第2個步驟就變成移植過程中重要的中間階段了。它使 Solaris開發者能夠在不放棄底層SPARC硬件和不修改應用程序中特定于SPARC的部分的前提下熟悉Linux環境。請下載可以在您的Sun硬件 上運行的Linux版本,然后安裝操作系統,使用所提供的GNU工具重新構建應用程序。因在第2個步驟中使用GCC構建了應用程序,所以在第2個步驟中將 碰到的區別將被限制到Solaris和Linux之間的運行時應用程序編程接口(application programming interface,API)的區別。
三、為其它硬件構建和測試應用程序
在遷移過程的最后一個步驟中,首先請獲取并在您選擇的目標硬件上安裝Linux??梢灾苯邮褂肔inux的服務器有IBM基于英特爾 IA32的產品系列(包括 NetVista、IntelliStation、Netfinity)和IBM eServer xSeries。IBM pSeries和zSeries也可以使用Linux。您可以低價購得或免費下載流行的用于x86的Red Hat Linux分發版,而且它在幾乎任何一臺基于英特爾處理器的PC機上都很容易安裝和設置。此外,一定要安裝將使用的編譯器和工具。
四、其它注意事項
系統管理總的來說,管理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上有很多常見、流行的第三方工具、實用程序和庫,它們都可以在Linux上使用。鑒于Linux的日益普及,支持Linux的第三方供應商的數目每天都在增長。
64位計算 Red Hat和很多其它發行商為Compaq/DEC Alpha提供了一種64位版的Linux。您可以在AlphaLinux Web站點上了解關于這種Linux的其它信息。64位的Solaris和64位的Linux/Alpha都使用LP64數據模型,它能夠帶來很好的兼容 性。不久,英特爾安騰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操作系統中運行ASP.NET 4
- Linux操作系統內核工作原理介紹
- 從Solaris遷移Perl腳本到Linux
- 甲骨文發布Solaris 11 Express(附下載)
- OpenSolaris后繼者初探:OpenIndiana的無線網絡管理
- OpenSolaris xVM hypervisor配置實戰