Solaris到Linux應用的移植(轉)
o 編譯器語言
o 程式碼中與硬體相關的因素(如字長或位元組尾附屬物)
o 平臺執行時服務
o 構建工具附屬物
o 可用的資料庫、聯網條件和訊息傳遞中介軟體
o 使用者介面可移植性
o 測試案例和測試環境
移植工作的規模和複雜性將與系統和環境相關的程式碼直接成正比。如果應用程式只使用標準語言構件和標準庫,而且並不一定要在 SPARC 處理器上的 Solaris 下執行,那麼移植就相對容易一點。舉例來說,Java 應用程式通常就屬於這個範疇。另一方面,如果應用程式是不使用 Solaris 上的 POSIX 服務的 C 程式,或者依賴於 Linux 上沒有的第三方產品,那麼移植工作就困難多了。當您移植應用程式時,很多情況下您都是在將不可移植的方法和附屬物替換成可移植性更好的東西。您會將 Solaris 構建工具替換成 GNU 工具,並使用與 POSIX 相容的執行緒庫代替 Solaris 中對應的庫。因為這些工具和介面在 Solaris 上也能找到,所以您可以繼續自由地使用 Solaris,甚至在將開發平臺移植到 Linux 之後繼續把握 Solaris 市場。
步驟 1:在 Solaris 上用 GNU 工具(GCC/gmake)構建 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 許可證中的某些條款和條件就將沿用到您的軟體上。
步驟 2:(可選的)在 SPARC 的 Linux 上構建和測試應用程式
有一種不常見的情況,那就是被移植的應用程式有對 SPARC 硬體特定的附屬物,這時步驟 2 就變成移植過程中重要的中間階段了。它使 Solaris 開發者能夠在不放棄底層 SPARC 硬體和不修改應用程式中特定於 SPARC 的部分的前提下熟悉 Linux 環境。請透過上面的連結之一來獲取可以在您的 Sun 硬體上執行的 Linux 版本。然後安裝作業系統,使用所提供的 GNU 工具重新構建應用程式。因為您在步驟 1 中使用 GCC 構建了應用程式,所以在步驟 2 中將碰到的區別將被限制到 Solaris 和 Linux 之間的執行時應用程式程式設計介面(application programming interface,API)的區別。
步驟 3:在 Linux 上為其它硬體構建和測試應用程式
在遷移過程的最後一個步驟中,首先請獲取並在您選擇的目標硬體上安裝 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 分發版。還有,您一定要安裝將使用的編譯器和工具。
其它注意事項
* 系統管理
總的來說,管理 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 資料模型,它能夠帶來很好的相容性。 不久,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 之外的大端平臺。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9417382/viewspace-944638/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 嵌入式linux應用程式移植方法總結Linux
- 用linuxdeployqt吧Qt應用部署到LinuxLinuxQT
- 開源繪畫應用 Pinta 已移植到GTK 3和.NET 6
- Linux 根檔案系統的移植(從入門到精通)Linux
- 把 Linux 移植到蘋果 M1 Mac 上Linux蘋果Mac
- Android應用內外跳 — 跳轉到應用市場Android
- 虹軟人臉識別——官方 Qt Demo 移植到 LinuxQTLinux
- 實現雲原生應用程式可移植的夢想
- 教你如何在快應用中跳轉到Android的appAndroidAPP
- mplayer 移植到 arm 心得
- NFC 標籤:自動跳轉到指定應用
- 如何優雅的移植JavaScript元件到BlazorJavaScript元件Blazor
- 【原創】EtherCAT主站IgH解析(二)-- 如何將Igh移植到Linux/Windows/RTOS等多作業系統移植指南LinuxWindows作業系統
- 點選連結跳轉到應用指定頁面
- Solaris Linux SSH緩慢診斷與解決Linux
- 移植ffmpeg到VC環境心得
- Vulkan移植GpuImage(三)從A到C的濾鏡GPUUI
- linux3.4.2核心-LCD驅動程式的移植Linux
- Linux 應用概述Linux
- Linux awk 中 xxxx的應用Linux
- A40i 平臺應用筆記-華為-ME909S-4G 模組的移植應用筆記
- iOS應用轉讓到其他開發者賬號步驟iOS
- 使用Linux expect批次巡檢Linux Aix Solaris磁碟使用率指令碼LinuxAI指令碼
- ubuntu移植到嵌入式平臺Ubuntu
- 如何把 awk 指令碼移植到 Python指令碼Python
- RT-Thread移植到stm32thread
- Vulkan移植GPUImage(五)從P到Z的濾鏡GPUUI
- Vulkan移植GpuImage(四)從D到O的濾鏡GPUUI
- Linux應用領域有哪些?linux應用技術學習Linux
- linux高通核心移植工具十教程Linux
- 各大作業系統AIX/HPUX/Solaris/Linux下的系統日誌作業系統AILinux
- SharePlex 基於Solaris 10 Linux自動巡檢指令碼Linux指令碼
- Linux在實際中的應用Linux
- Linux 中 sed 中xxx 的應用Linux
- Linux 應用領域Linux
- 開放式測試跳轉到應用市場顯示應用已下架如何處理
- SPI轉can晶片CSM300詳解以及Linux驅動移植除錯筆記晶片Linux除錯筆記
- solaris下清除crs的方法
- TLS 1.3已反向移植到的Oracle JDK8 - OracleTLSOracleJDK