- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Unix提供了一个程序make,来帮助按照代码之间的时间依赖关系.doc
Unix提供了一個程序──make, 來幫助按照代碼之間的時間依賴關係來進行維護工作,避免每次都更改了所有的檔案,每次都完全重新編譯所有的代碼
使用了make,對大型的應用軟體進行維護就會容易一些。然而不同的系 統有一些與系統相關的定義,這些定義需要在Makefile中依據不同的系統重新設 置,例如X Window的目錄等,這樣要完成可以適合多個不同系統的Makefile檔案 ,仍然具有困難。有一些工具能幫助進行這些系統相關的設置,並生成Makefile 檔案,例如X Window系統使用xmkmf命令和imake模板檔案來產生本地的Makefile 檔案,這樣就能正確偵知本地系統中有關X Window的正確設置,但軟體開發者首 先要完成Imakefile檔案,以使用xmkmf。而GNU的軟體使用autoconf工具,它使用configure命令用來偵測很多系統相關的設置,如編譯器、頭檔案、庫函數等 等,然後使用預設置的Makefile.in模板檔案來產生相應的Makefile。有了這些 工具,進行編譯各種多平台的應用程序都不再是困難的了。
關於跨平台:
在一個系統上開發一套軟體是一回事,而要將此軟體整個移到另外一個不同的平台上編譯、執行又是另一回事。因為不同的平台有不同的特性、不同的開發環境、可能連相同名稱的工具程式的用法也不相同。因此,要將程式跨平台移植不是一件容易的事,甚至連相似程度最高的各 UNIX 系統間也是如此。
然而,人們對於自由軟體總是情有獨鍾,因為它不但可以免費取得,而且還可以自由使用,甚至連原始碼都有,故「跨平台移植」 這個議題在自由軟體世界就顯得格外迫切需要。
但「跨平台移植」不是件簡單的事,因為每個系統都有差異,而這些差異有些是可預期的(或固定的),有些則不能預期。是否有方法可以達到完全的自動化呢?因此,這邊就有兩種不同的解決方案出現:
1.各平台提供其平台的資訊讓編譯系統參考,如些編譯系統在進行程式編譯時, 可以依程式原始碼中內含的規則做適度的調整,以適應不同的平台。
2.程式原始碼主動出擊,在編譯之前自行偵測此系統平台的組態為何,然後動態調整自己以適應此系統平台,讓編譯工作得以順利進行。
其中 1.方案在許多大型的開發環境中較常見,例如X Window系統或 gtk+ 函式庫等。而 2.方案則是GNU的漂亮傑作。很多時候,我們也可以同時採行這兩個方案,相輔相承。以下,我們就針對Linux舉幾個重要的例子,來看看這些跨平台的解決方案。
? autoconf
autoconf 是最基本的軟體偵測系統平台的工具。此套件收集了大部分的 UNIX 系統 (可能還包括了其他作業系統) 平台的基本特性,經過分析歸納成幾個基本的原則, 然後再根據這些原則來測試系統,並依據測試結果來調整原始碼本身,最後才開始 編譯工作。
通常當我們將程式寫好後,我們可以依據程式的需求來加入 autoconf 的支援。例 如要編譯我們的程式可能需要某些函式庫、可能需要額外的工具程式、可能對編譯 器本身的特性有特別的需求 .... 等等,這些需求都是我們事先可以知道的,但我 們不能確定想拿我們的程式來編譯的系統平台是否能符合這些需求,故我們就將這 些需求寫好,經由 autoconf 程式將它轉換成一個名為 configure 的 shell script, 如此一旦有人要編譯我們的程式時,我們會請他/她先跑一次這個 configure 的 shell script, 它就會根據我們程式的需求去一項項地測試系統,並將測試報告以 各種方式輸出。輸出方式可能包括產生 config.h 的標頭檔,讓我們的原始碼可以 利用,如此我們的原始碼就會知道這個系統有什麼?沒有什麼?而在編譯開始時告 訴編譯器要編譯那幾段的程式碼。或者 configure 也可以根據我們事先準備好的 樣本檔 Makefile.in 來產生可以適應該系統平台的 Makefile, 告訴 make 在編譯 時應該下什麼指令給編譯器?如何安裝編譯好的程式 .... 等等。
也許有人會覺得奇怪,make 程式不都有支援 Makefile 中使用條件判斷式嗎?我們 為什麼不直接將適應各種系統平台的資訊寫入 Makefile 的條件判斷式中,讓它在 編譯時可以直接適應系統平台,而非得用 autoconf 與 configure 不可呢?原因在 於,各家系統平台的 make 程式所能接受的條件判斷式的語法都不同,因此我們很 難寫出一份所有平台都能接受的 Makefile。然而,shell script 的基本語法卻是 可以在各家系統平台 (至少各家 UNIX 平台) 中通行的,而且就算只用到基本語法, 也足以完成所有的系統測試工作,這就是為什麼拌隨程式原始碼而來 config
您可能关注的文档
- Pascal初级习题(赋值语句----过程和函数).doc
- PDM期末报告PDM之文件管控学生杨雅茹.陈妍伶学号691520042.doc
- Origin软件简介第六组成员.ppt
- PicoBlaze指令集详解.ppt
- PLC实训指导书.doc-信息与控制学院.doc
- ppt-南昌大学-基础物理实验中心.ppt
- Processing介绍与教学.doc
- ProtelDXP系统要求(续).ppt
- proteus__菜鸟教程.doc.doc
- RecordCount属性返回指示Recordset中记录数目的Long值。用.doc
- 教科版(2017秋)科学二年级上册2.6 做一顶帽子 教学设计.docx
- 河北高频考点专训四 质量守恒定律的应用教学设计---2024-2025学年九年级化学人教版(2024)上册.docx
- 大单元教学【核心素养目标】6.3 24时计时法教学设计 人教版三年级下册.docx
- 河南省商城县李集中学2023-2024学年下学期九年级历史中考模拟八(讲评教学设计).docx
- 第18章 第25课时 正方形的性质2023-2024学年八年级下册数学课时分层作业教学设计( 人教版).docx
- Module 8 模块测试 教学设计 2024-2025学年英语外研版八年级上册.docx
- 2024-2025学年小学数学五年级下册浙教版教学设计合集.docx
- 2024-2025学年小学劳动四年级下册人民版《劳动》(2022)教学设计合集.docx
- 2024-2025学年小学数学三年级上册冀教版(2024)教学设计合集.docx
- 2024-2025学年高中生物学必修1《分子与细胞》人教版教学设计合集.docx
文档评论(0)