標籤: 暫無標籤

第二類編程環境稱為編譯系統,開發者根據語言的規定編寫源程序,然後進行編譯、連接,生成可執行軟體,例如DOS操作系統加各類高級語言,如FORTRAN、PASCLL、C語言等就屬於這種類型

第二類編程環境稱為編譯系統,開發者根據語言的規定編寫源程序,然後進行編譯、連接,生成可執行軟體,例如DOS操作系統加各類高級語言,如FORTRAN、PASCLL、C語言等就屬於這種類型

1 編譯系統 -簡介

介面平台,用於提供編譯任務輸入介面以及處理狀態信息輸出介面,並根據輸入的編譯任務生成任務名;編譯服務

器,用於解析所述任務名,獲得相應的源代碼,並進行編譯,同時產生所述編譯任務的處理狀態信息提供給

編譯系統編譯系統

所述介面平台。方法包括:接收輸入的編譯任務;根據所述編譯任務生成任務名;解析獲得所述任務名對應的源代碼;編譯所述源代碼,並輸出所述編譯任務的處理狀態信息。上述技術方案中,通過介面平台接收編譯任務,由介面平台以任務名形式發起編譯請求,進行編譯,簡化了編譯輸入操作;處理狀態信息,通過介面平台實時提供給客戶端,簡化了編譯監控操作,大大節約了人力資源。

2 編譯系統 -MTK分散式編譯系統

MTK分散式編譯系統
眾所周知,MTK平台使用ARM ADS進行編譯,一千多個源文件,單機需要四五十分鐘才能完成,如果機器開著殺毒軟體,速度會更慢。為了提高編譯速度,可以把殺毒軟體暫時停掉,但是效果不會太明顯。解決問題的根本做法是利用網內閑置的機器,搭建一個分散式系統,多台機器同時編譯,可以收到明顯效果。

編譯系統編譯系統

本系統由註冊伺服器、編譯伺服器和客戶端組成。網內啟動一個註冊伺服器,多個編譯伺服器。在MTK6223平台上,單機new一次需要50分鐘的項目,使用10個編譯伺服器同時編譯,new一次需要13分鐘。模塊編譯之前是在客戶端工作的,需要9分鐘,其中為了實現分散式編譯,壓縮源代碼佔用了2分鐘,文件下載到編譯伺服器需要2分鐘。從第一個模塊編譯到最後link之前,10台機器僅用4分鐘就完成了1200個c文件的編譯工作。最後的link是在本機進行的,幾十秒就完了。我曾經試過18台機器同時編譯,1200個c文件不到2分鐘就編譯完成了,當然下載時間需要3分鐘。對於開發人員來講,new一次不再是夢魘。

當然,不能無限制地增加編譯伺服器,要考慮文件傳輸所消耗的時間。MTK平台文件很多,需要由客戶端向伺服器分發。一般地,一個客戶端與十個伺服器聯合編譯可以達到理想效果。

3 編譯系統 -DM2預編譯系統

預編譯系統是DM2系統的重要組成部分。它支持在C程序中嵌入使用SQL語言,充分發揮語言數據類型豐富、處理方便靈活的優勢,又以SQL語言彌補高級語言難以描述資料庫操作的不足,為用戶提供了建立大型管理信息系統和處理複雜事務所需要的工作環境。預編譯系統還支持互動式介面DM2-ISQL、應用開發工具集DM2-FORM、DM2-GRAPH、DM2-REPORT等工作環境。

4 編譯系統 -編譯系統CMake

CMake就像是我們在uni上使用的make一樣,是用來管理怎樣編譯一個project的。它的好處是:

編譯系統編譯系統


1) 跨越多個操作系統平臺,包括當前應用最廣泛的windows,unix(包括Mac OS X).
2) 採用BSD風格的協議開放源代碼。據我個人閱讀協議文件,沒發現協議與兩句BSD協議有什麽不同。
3) 它可以支持具有非常複雜的路徑、庫依賴的程序的編譯。比如它支持編譯個程序:它依賴於很多的庫以及其它一些代碼文件,而每一個庫又有很多子目錄。。。
4) 像很多Make一樣,它會對曾經編譯的文件做一些cache一遍加速以後的編譯。

使用這個編譯系統的時候,需要每個目錄/子目錄創建一個名為CMakeLists.txt的文件。
這個項目歷史也算是比較悠久了,從2000年就開始了。
當前使用這個編譯系統的項目:llvm/clang。。。
我就是從clang的源代碼里發現的,郵件列表裡有人推薦使用cmake,不要使用msvc的.sln文件

5 編譯系統 -反編譯系統

高級語言源程序經過 編譯 變成可執行文件,反編譯就是逆過程。
但是通常不能把可執行文件變成高級語言源代碼,只能轉換成彙編程序。
計算機軟體反向工程(Reversepengineering)也稱為計算機軟體還原工程,是指通過對他人軟體的目標程序(可執行程序)進行「逆向分析、研究」工作,以推導出他人的軟體產品所使用的思路、原理、結構、演算法、處理過程、運行方法等設計要素,作為自己開發軟體時的參考,或者直接用於自己的軟體產品中。
反編譯是一個複雜的過程,所以越是高級語言,就越難於反編譯,但目前還是有許許多多的反編譯軟體:
VB: VBExplorer ;只能反編譯界面圖像,好像代碼不能完全反編譯
JAVA: JAD ;java的反編譯比較常見,所以反編譯比較完全 C++ : exescope

6 編譯系統 -Symbian編譯系統

所謂編譯,就是在編譯程序讀取源程序(字元流),對之進行詞法和語法的分析,將高級語言指令轉換為功能等效的

編譯系統編譯系統

彙編代碼,再由彙編程序轉換為機器語言,並且按照操作系統對可執行文件格式的要求鏈接生成可執行程序。
UNIX環境下的C編譯系統所遵循的也是這麼一個一般的過程。值得注意的是這個過程並不是有某個單個程序完成的,而是有多個分別完成某一方面工作的程序組合完成的。這一設計思想同我們最初提到的UNIX系統軟體功能專一的特點是相符的。
歸納起來,可以將UNIX環境下C編譯系統的工作過程下圖所示。
C源程序頭文件-->預編譯處理(cpp)-->編譯程序本身-->優化程序-->彙編程序-->鏈接程序-->可執行文件
一般我們用cc命令來完成對源程序的編譯工作。此cc命令並不是一個二進位的可執行程序,而是一個shell命令文件。它的工作就是依次調用我們上面所列出的各個完成某部分工作的具體程序,將指定的c源程序轉換成可執行的代碼。
在UNIX系統中,實現C源程序到可執行文件的這一轉換過程的工具是cc。在大多數系統中cc實際上是一個shell命令文件。有些系統中的C編譯程序可能並不叫cc而是其它的一個什麼名稱,如Sun工作站上常用的gcc等等。但這些都無關緊要。大多數系統中C編譯命令的用法基本上都是類似的。我們這裡介紹的將以SVR4上的C編譯系統為基礎。

參考資料

CMake:http://www.cmake.org/

UNIX開發編譯系統:http://hi.baidu.com/lord_wy/blog/item/7ce92b24f4742b2bd5074208.html

上一篇[紐約尼克斯隊]    下一篇 [偽娘]

相關評論

同義詞:暫無同義詞