国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
將Unix應(yīng)用程序移植到Linux系統(tǒng)詳解
將Unix應(yīng)用程序移植到Linux系統(tǒng)詳解
 
作者:korn  出處:linux.ccidnet.com  更新時(shí)間: 2007年03月08日 
 
您知道 Linux®現(xiàn)在已是世界第二的服務(wù)器操作系統(tǒng)嗎?今天,您的應(yīng)用程序在 Linux 上運(yùn)行嗎?如果不是,那么本文將給您些提示和技巧,在您把應(yīng)用程序移植到 Linux 的時(shí)候?yàn)槟峁┲笇?dǎo)。本文依據(jù)的是軟件工程師的經(jīng)驗(yàn),這些工程師來(lái)自獨(dú)立軟件供應(yīng)商(Independent Software Vendors,ISV)和全世界的IBM®實(shí)驗(yàn)室,他們參與了許多把應(yīng)用程序移植到 Linux 的項(xiàng)目。 

  首先我們描述 Linux 的特征和它在開(kāi)發(fā)和管理應(yīng)用程序中的具體價(jià)值。接著,我們將回顧重要問(wèn)題,給出包含移植的主要步驟的移植指南。最后,我們以 IBM ~ zSeries™ 為例,為您演示從一個(gè) Linux 平臺(tái)移植到另一個(gè)平臺(tái)是多么的容易。(zSeries 這個(gè)詞指 S/390®和 zSeries。) 

  Linux 的特征和價(jià)值 

  開(kāi)放性意味著應(yīng)用程序靈活性:Linux 是真正的開(kāi)放系統(tǒng),這使應(yīng)用程序的可移植性成為現(xiàn)實(shí)。在很多情況下,一次簡(jiǎn)單的重編譯就能把應(yīng)用程序帶入 Linux。在優(yōu)化您的開(kāi)發(fā)和部署平臺(tái)時(shí),這種快速移植給您真正的靈活性。 

  多種硬件支持意味著平臺(tái)靈活性:Linux 幾乎可在所有已知的處理器上運(yùn)行,無(wú)論是 RISC 還是 CISC,32 位還是 64 位。它涵蓋全部類(lèi)型的計(jì)算機(jī),從大型機(jī)服務(wù)器(IBM ~ zSeries)到 PowerPC®、Sun®UltraSPARC、Alpha、PA-RISC 和 Intel 處理器,往下還有個(gè)人數(shù)字助理和嵌入式系統(tǒng)。特別是所有的 IBM ~ 品牌服務(wù)器都支持 Linux。 

  源代碼的可用性意味著自己動(dòng)手的靈活性:與多數(shù)以二進(jìn)制形式發(fā)行的商業(yè)軟件不同,Linux 內(nèi)核的源代碼是可以獲得的。您可以拿到源代碼,然后修改和重編譯它,以滿(mǎn)足您的特定要求。調(diào)試和解決問(wèn)題或增加新的特性不再依賴(lài)任何供應(yīng)商。您可以自己作出需要的更改,只要它們符合 GNU General Public License 的規(guī)定。 

  嚴(yán)肅的設(shè)計(jì)意味著安全性:Linux 安全性是從內(nèi)核上構(gòu)建的,由于實(shí)現(xiàn)它的代碼要接受成千上萬(wàn)的開(kāi)發(fā)者的檢驗(yàn),所以弱點(diǎn)會(huì)被及早地發(fā)現(xiàn)。Linux 中建有許多路由和防火墻功能。 

  流行意味著存在技能:因?yàn)?nbsp;Linux 在大學(xué)和學(xué)院中流行,所以多數(shù)新的畢業(yè)生有 Linux 經(jīng)驗(yàn)。您幾乎可以在任何城市的 Linux 用戶(hù)組中找到該地區(qū)能夠熟練應(yīng)用 Linux 的人,而 Web 站點(diǎn)和因特網(wǎng)新聞組仍然是 Linux 使用指南信息和非正式技術(shù)咨詢(xún)的一種寶貴而有效的來(lái)源。 

  開(kāi)始前需考慮的重要問(wèn)題 

  移植到 Linux 可能是容易的、簡(jiǎn)單的和直接的,特別是當(dāng)您的 UNIX®應(yīng)用程序的編寫(xiě)遵循公共的開(kāi)放的標(biāo)準(zhǔn)。如果您認(rèn)為移植到 Linux 是有吸引力的,那么您需要分析移植中涉及的潛在花費(fèi)和風(fēng)險(xiǎn)及減小它們的方法。 

  遷移會(huì)涉及巨額初始投資嗎? 

  成本 ― 移植將涉及巨大的時(shí)間、人員和金錢(qián)的初期投入嗎?該項(xiàng)目會(huì)凍結(jié)所有的其它新工作并消耗整個(gè)團(tuán)隊(duì)的資源嗎?需要提前支付大量資金費(fèi)用和再培訓(xùn)費(fèi)用嗎?這是不是冒著極大風(fēng)險(xiǎn)的提議:一旦開(kāi)始,要么完成,要么完全失??? 

  移植到 Linux 是可管理的 ― 本文的移植指南部分講述怎樣一步一步地移植而每個(gè)中間步驟本身是穩(wěn)定的。這使您能根據(jù)您的優(yōu)先級(jí)管理成本、人員和項(xiàng)目。這意味著您可以獨(dú)立完成每一步,在完成每步后重新估計(jì)您的優(yōu)先級(jí)和目標(biāo)。這樣的結(jié)果是風(fēng)險(xiǎn)更容易被控制而給您的公司帶來(lái)的影響更小。 

  成本有多大?需要花多少時(shí)間? 

  花費(fèi)的時(shí)間和金錢(qián) ― 根據(jù)和移植有關(guān)的因素,全面估計(jì)您的應(yīng)用程序: 

  編譯器的差異; 

  您的代碼中與硬件相關(guān)的構(gòu)造(例如字的長(zhǎng)度或字節(jié)順序的相關(guān)性); 

  平臺(tái)運(yùn)行時(shí)服務(wù); 

  構(gòu)建工具的相關(guān)性; 

  數(shù)據(jù)庫(kù)、聯(lián)網(wǎng)和消息傳遞中間件的可用性; 

  用戶(hù)界面的可移植性; 

  測(cè)試案例和測(cè)試環(huán)境。 

  移植的工作量和復(fù)雜程度直接和依賴(lài)系統(tǒng)和環(huán)境的代碼的多少成正比。如果您的應(yīng)用程序只用標(biāo)準(zhǔn)的語(yǔ)言構(gòu)造和標(biāo)準(zhǔn)的庫(kù),那么移植起來(lái)相對(duì)容易些。例如, Java®應(yīng)用程序常常屬于這一類(lèi)。反之,如果您的應(yīng)用程序是一個(gè) C 程序,其中用到 Solaris 上不符合 POSIX 的服務(wù)或依賴(lài)在 Linux 上沒(méi)有的第三方產(chǎn)品,那么移植難度將大大增加。通常,系統(tǒng)測(cè)試、配置的測(cè)試和軟件的安裝是重要步驟并且是移植的主要部分。 

  我的應(yīng)用程序還能在原來(lái)的 UNIX 平臺(tái)上運(yùn)行嗎? 

  緩解 ― 即使把開(kāi)發(fā)轉(zhuǎn)移到 Linux 后,您仍可以保持原來(lái)的平臺(tái)選擇,以滿(mǎn)足您的其它市場(chǎng)。移植到 Linux 通常意味著構(gòu)建工具被 GNU 工具替代,平臺(tái)相關(guān)的線程庫(kù)被符合 POSIX 的替代。在其它 UNIX 平臺(tái)上,GNU 工具和庫(kù)都能用,使您能同時(shí)兼顧您原來(lái)的平臺(tái)和 Linux。 

 
C 和 C++ 應(yīng)用程序的移植指南 

  以下技術(shù)討論來(lái)自 Solaris to Linux porting guide(1)(ibm.com/developerworks/linux/library/l-solar/),這些討論也可被用于其它主流 UNIX 系統(tǒng)。 

  Linux 操作系統(tǒng)、構(gòu)建工具和多數(shù)語(yǔ)言的編譯器可免費(fèi)獲得并可從因特網(wǎng)上下載。為了開(kāi)始移植,您將需要提供硬件和開(kāi)發(fā)人員: 

  第1步:下載 

  以下列出的是所需的編譯器、構(gòu)建工具和相關(guān)的在線文檔鏈接: 

  GCC(GNU Compiler Collection)工具套件包含一個(gè) C 編譯器和一個(gè) C++ 編譯器 

  gcc.gnu.org/releases.html 

  在線文檔 

  gcc.gnu.org/onlinedocs/gcc-2.95.2/gcc_toc.html 

  Solaris GNU 編譯器和 make(gmake)實(shí)用程序 

  www.sunfreeware.com/ 

  在線文檔 

  docs.sun.com/ 

  gnu.org/manual/make-3.79.1/html_mono/make.html 

  Linux 可從以下 Linux 發(fā)行商那里獲得。 

  Caldera www.caldera.com/ 

  Red Hat www.redhat.com/ 

  SuSE www.suse.com/ 

  Turbolinux www.turbolinux.com/ 

  ― Linux 的 UltraSPARC 版本 

  Sun www.sun.com 

  第2步:為 Solaris 上的 Linux 構(gòu)建您的 C/C++ 應(yīng)用程序 

  安裝工具 ― 先在 Solaris 上安裝 GNU 工具。由于 GNU 編譯器和 make 實(shí)用程序在 Solaris 和 Linux 上都能用,所以使用這些工具來(lái)嘗試初次構(gòu)建您的 Linux 應(yīng)用程序相對(duì)較容易。 

  轉(zhuǎn)換 makefile ― 構(gòu)建您的應(yīng)用程序時(shí)請(qǐng)用 GNU gmake 實(shí)用程序,別用 Solaris make 實(shí)用程序。根據(jù)您的 makefile 中用到的構(gòu)造,您可能遇到 GNU gmake 實(shí)用程序產(chǎn)生的錯(cuò)誤消息,因?yàn)?nbsp;GNU gmake 實(shí)用程序和 Solaris make 實(shí)用程序是有區(qū)別的。請(qǐng)用 make 工具文檔來(lái)幫助找出 makefile 中有問(wèn)題的地方,然后對(duì) makefile 作出所需的調(diào)整。 

  編譯和調(diào)試 ― 當(dāng)您通過(guò)修改您的 makefile、使之能被 gmake 使用后,把 makefile 中調(diào)用 C 編譯器的名字 cc 改為 gcc,C++ 編譯器的名字 CC 改為 g++。然后編譯該應(yīng)用程序。您在構(gòu)建中所遇到的錯(cuò)誤消息,如果有的話,可被分成兩類(lèi):命令行選項(xiàng)問(wèn)題和代碼問(wèn)題。 

  找出由于 GNU 和 Sun 編譯器所接受的命令行選項(xiàng)有所不同而產(chǎn)生的消息。除了幾個(gè)基本選項(xiàng)(例如“-c”和“-g”),兩個(gè)編譯器能接受的多數(shù)選項(xiàng)是不同的。請(qǐng)參閱編譯器文檔,修改您的 makefile,以適應(yīng)編譯器選項(xiàng)間的區(qū)別。 

  下一步,您可以處理剩下的與代碼有關(guān)的錯(cuò)誤消息和警告。請(qǐng)參閱編譯器文檔,理解并解決由于編譯器之間的差別而產(chǎn)生的問(wèn)題。 

  第3步:在 Linux 的 Sun UltraSPARC 版本上構(gòu)建和測(cè)試您的應(yīng)用程序。 

  如果所移植的應(yīng)用程序依賴(lài)特定的 UltraSPARC 硬件,那么這是移植過(guò)程中的重要階段。Solaris 開(kāi)發(fā)者有機(jī)會(huì)熟悉 Linux 環(huán)境而不必放棄下層的 UltraSPARC 硬件,也不必修改應(yīng)用程序中特定于硬件的部分。 

  安裝 Linux 環(huán)境 ― 在 Sun UltraSPARC 上,安裝 Linux 和 GNU 實(shí)用程序。 

  編譯并調(diào)試運(yùn)行時(shí) API ― 因?yàn)槟跇?gòu)建您的應(yīng)用程序時(shí)用的是 GNU 實(shí)用程序,所以您在這步看到的區(qū)別限于 Solaris 和 Linux 之間的運(yùn)行時(shí)應(yīng)用程序編程接口(application programming interfaces,API)的區(qū)別。如果您想了解這些區(qū)別的更多信息,請(qǐng)參閱運(yùn)行時(shí)接口部分(第 7 頁(yè))。對(duì)應(yīng)用程序作出所需的調(diào)整。測(cè)試 ― 當(dāng)應(yīng)用程序被完全地重新構(gòu)建后,進(jìn)行徹底的驗(yàn)證測(cè)試。 

  第4步:在目標(biāo) Linux 平臺(tái)上構(gòu)建和測(cè)試您的應(yīng)用程序。 

  安裝 Linux 環(huán)境 ― 在目標(biāo)硬件上安裝 Linux 和 GNU 工具。 

  復(fù)制并重新構(gòu)建應(yīng)用程序 ― 把您的源代碼樹(shù)和 makefile 復(fù)制到新的 Linux 機(jī)器上并重新構(gòu)建應(yīng)用程序。如果您沒(méi)完成第 3 步,那么您可能需要修改應(yīng)用程序,以適應(yīng) Solaris 和 Linux 之間運(yùn)行時(shí) API 的區(qū)別。最后,如果您的應(yīng)用程序包含任何特定于 UltraSPARC 的代碼,那么,請(qǐng)作出所需的修改,以解決那部分代碼的問(wèn)題。 

  修改安裝例程,以適應(yīng)目標(biāo) Linux 平臺(tái)。各種 Linux 平臺(tái)(分發(fā)版)的配置和啟動(dòng)文件的位置稍有不同。 

  測(cè)試 ― 在結(jié)束移植前,對(duì)移植的應(yīng)用程序運(yùn)行徹底的驗(yàn)證測(cè)試套件。另外,在目標(biāo) Linux 平臺(tái)上測(cè)試配置和安裝。 

  注意!許可證和版權(quán)條款 ― 當(dāng)您移植到 Linux 并把您的應(yīng)用程序和開(kāi)放源代碼的庫(kù)鏈接時(shí),請(qǐng)注意和這些庫(kù)有關(guān)的許可證和版權(quán)。至少來(lái)說(shuō),您新移植的 C/C++ 應(yīng)用程序?qū)⒈绘溄拥?nbsp;GNU C/C++ 運(yùn)行時(shí)庫(kù)。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
被 Linus Torvalds 批評(píng)過(guò)的十一種技術(shù)
Linux編譯安裝中configure、make和make install各自的作用
Embedded Linux 技術(shù)與概念解析
Linux命令 CC與GCC比較
跨平臺(tái)開(kāi)發(fā)所需要的編譯開(kāi)關(guān)
Oracle強(qiáng)調(diào)Solaris Unix計(jì)劃 明年推Solaris11 - CSDN 云計(jì)...
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服