亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

用于處理源文件的方法和裝置的制造方法

文檔序號:9579039閱讀:183來源:國知局
用于處理源文件的方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明的各實施方式涉及編譯(compiling)領(lǐng)域,更具體地,涉及處理源文件 (source file)以生成目標(biāo)文件(object file)的方法和裝置。
【背景技術(shù)】
[0002] 隨著計算機(jī)技術(shù)的發(fā)展,目前已經(jīng)出現(xiàn)了大量的編程語言。并且,目前的很多編程 語言的源代碼(source code)涉及多種類型的文件格式,例如,對于C語言而言,源代碼可 以包括源文件(例如,*· c文件)和頭文件(header file)(例如,*· h文件);又例如,對于 C++語言而言,源代碼可以包括源文件(例如,*. cpp文件)和頭文件(例如,*. h和*. hpp 文件)。
[0003] 通常而言,源文件可以用于保存程序的具體實現(xiàn)(例如,主體代碼部分),而頭文 件可以保存程序的接口(例如,數(shù)據(jù)結(jié)構(gòu)和函數(shù)的定義等)。源文件可以引用(reference) 頭文件,例如在C和C++中可以通過"#include"來引用頭文件。具體而言,一個源文件可 以引用多個頭文件,而一個頭文件可以被多個源文件引用。因而,在源文件和頭文件之間可 以存在多對多的復(fù)雜引用關(guān)系。
[0004] 開發(fā)人員通常會在一個源文件中引用多個頭文件(有時可能會引用該源文件實 際上不需要的頭文件),此時,當(dāng)多個頭文件中的任一頭文件被更新時(即使被更新的頭文 件與源文件完全無關(guān)),都需要重新編譯該源文件。
[0005] 應(yīng)當(dāng)注意,編譯源文件涉及大量處理步驟:例如前端(front-end)處理可以包括 詞法分析、語法分析、語義分析、中間代碼生成等,而后端(back-end)處理涉及代碼優(yōu)化和 目標(biāo)代碼(object code)生成等。因而,僅僅編譯一個源文件就可能耗費(fèi)大量時間。
[0006] 另一方面,隨著用戶需求的復(fù)雜化,單獨(dú)的編程人員已經(jīng)很難完成應(yīng)用程序的開 發(fā)。每個編程人員可能會開發(fā)數(shù)十甚至更多的源文件,并且每個源文件還可能會引用一個 或者多個頭文件。此時,重新編譯全部源代碼可能會需要數(shù)十分鐘甚至更長的時間?;?上述問題,如何降低編譯源代碼所需的時間并提高編譯效率,成為一項亟待解決的問題。

【發(fā)明內(nèi)容】

[0007] 因而,期望開發(fā)出能夠降低需要被編譯的源代碼的數(shù)量、進(jìn)而降低編譯源代碼所 需的時間的技術(shù)方案;并且期望可以在盡量不改變現(xiàn)有的編譯方案的情況下實現(xiàn)期望該技 術(shù)方案。
[0008] 在本發(fā)明的一個實施方式中,提供了一種用于處理源文件以生成目標(biāo)文件的方 法,包括:獲取由源文件所引用的頭文件;響應(yīng)于源文件調(diào)用在頭文件中定義的數(shù)據(jù)符號 (data symbol),創(chuàng)建數(shù)據(jù)符號的定義的指示符,其中不同數(shù)據(jù)符號的定義對應(yīng)于不同的指 示符;以及向編譯源文件所得的編譯結(jié)果添加指示符以生成目標(biāo)文件。
[0009] 在本發(fā)明的一個實施方式中,提供了一種用于處理源文件的方法,包括:響應(yīng)于源 文件所引用的頭文件被更新,在頭文件中查找由源文件調(diào)用的數(shù)據(jù)符號的定義;創(chuàng)建數(shù)據(jù) 符號的定義的第一指示符;以及響應(yīng)于第一指示符匹配于從源文件生成的目標(biāo)文件中的指 示符,通知無需重新編譯源文件,其中目標(biāo)文件是根據(jù)本發(fā)明的方法生成的。
[0010] 在本發(fā)明的一個實施方式中,提供了一種用于處理源文件以生成目標(biāo)文件的裝 置,包括:獲取模塊,配置用于獲取由源文件所引用的頭文件;創(chuàng)建模塊,配置用于響應(yīng)于 源文件調(diào)用在頭文件中定義的數(shù)據(jù)符號,創(chuàng)建數(shù)據(jù)符號的定義的指示符,其中不同數(shù)據(jù)符 號的定義對應(yīng)于不同的指示符;及生成模塊,配置用于向編譯源文件所得的編譯結(jié)果添加 指示符以生成目標(biāo)文件。
[0011] 在本發(fā)明的一個實施方式中,提供了一種用于處理源文件的裝置,包括:查找模 塊,配置用于響應(yīng)于源文件所引用的頭文件被更新,在頭文件中查找由源文件調(diào)用的數(shù)據(jù) 符號的定義;創(chuàng)建模塊,配置用于創(chuàng)建數(shù)據(jù)符號的定義的第一指示符;以及通知模塊,配置 用于響應(yīng)于第一指示符匹配于從源文件生成的目標(biāo)文件中的指示符,通知無需重新編譯源 文件,其中目標(biāo)文件是根據(jù)本發(fā)明的裝置生成的。
[0012] 采用本發(fā)明所述的方法和裝置,可以在從源文件生成的目標(biāo)代碼中記錄該源文件 所調(diào)用的數(shù)據(jù)符號的定義的指示符。進(jìn)一步,可以基于該指示符來判斷頭文件中被更新的 部分對于源文件是否有影響,并且在有影響的情況下重新編譯源文件,而在沒有影響的情 況下不必重新編譯源文件。以此方式,可以大大減少將被編譯的源代碼的數(shù)量,進(jìn)而降低編 譯時間。
【附圖說明】
[0013] 通過結(jié)合附圖對本公開示例性實施方式進(jìn)行更詳細(xì)的描述,本公開的上述以及其 他目的、特征和優(yōu)勢將變得更加明顯,其中,在本公開示例性實施方式中,相同的參考標(biāo)號 通常代表相同部件。
[0014] 圖1示意性示出了適于用來實現(xiàn)本發(fā)明實施方式的示例性計算機(jī)系統(tǒng)/服務(wù)器12 的框圖;
[0015] 圖2示意性示出了根據(jù)一個技術(shù)方案的源文件和頭文件之間的引用關(guān)系的框圖;
[0016] 圖3示意性示出了根據(jù)本發(fā)明一個實施方式的處理源文件的技術(shù)方案的框圖;
[0017] 圖4A示意性示出了根據(jù)本發(fā)明一個實施方式的處理源文件以生成目標(biāo)文件的方 法的流程圖,以及圖4B示意性示出了根據(jù)本發(fā)明一個實施方式的處理源文件的方法的流 程圖;
[0018] 圖5示意性示出了根據(jù)本發(fā)明一個實施方式的處理源文件以生成目標(biāo)文件的框 圖;
[0019] 圖6示意性示出了根據(jù)本發(fā)明一個實施方式的處理源文件的框圖;以及
[0020] 圖7A示意性示出了根據(jù)本發(fā)明一個實施方式的處理源文件以生成目標(biāo)文件的裝 置的框圖,以及圖7B示意性示出了根據(jù)本發(fā)明一個實施方式的處理源文件裝置的框圖。
【具體實施方式】
[0021] 下面將參照附圖更詳細(xì)地描述本公開的優(yōu)選實施方式。雖然附圖中顯示了本公開 的優(yōu)選實施方式,然而應(yīng)該理解,可以以各種形式實現(xiàn)本公開而不應(yīng)被這里闡述的實施方 式所限制。相反,提供這些實施方式是為了使本公開更加透徹和完整,并且能夠?qū)⒈竟_的 范圍完整地傳達(dá)給本領(lǐng)域的技術(shù)人員。
[0022] 圖1示出了適于用來實現(xiàn)本發(fā)明實施方式的示例性計算機(jī)系統(tǒng)/服務(wù)器12的框 圖。圖1顯示的計算機(jī)系統(tǒng)/服務(wù)器12僅僅是一個示例,不應(yīng)對本發(fā)明實施方式的功能和 使用范圍帶來任何限制。
[0023] 如圖1所示,計算機(jī)系統(tǒng)/服務(wù)器12以通用計算設(shè)備的形式表現(xiàn)。計算機(jī)系統(tǒng) /服務(wù)器12的組件可以包括但不限于:一個或者多個處理器或者處理單元16,系統(tǒng)存儲器 28,連接不同系統(tǒng)組件(包括系統(tǒng)存儲器28和處理單元16)的總線18。
[0024] 總線18表示幾類總線結(jié)構(gòu)中的一種或多種,包括存儲器總線或者存儲器控制器, 外圍總線,圖形加速端口,處理器或者使用多種總線結(jié)構(gòu)中的任意總線結(jié)構(gòu)的局域總線。舉 例來說,這些體系結(jié)構(gòu)包括但不限于工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線,微通道體系結(jié)構(gòu)(MAC) 總線,增強(qiáng)型ISA總線、視頻電子標(biāo)準(zhǔn)協(xié)會(VESA)局域總線以及外圍組件互連(PCI)總線。
[0025] 計算機(jī)系統(tǒng)/服務(wù)器12典型地包括多種計算機(jī)系統(tǒng)可讀介質(zhì)。這些介質(zhì)可以是 任何能夠被計算機(jī)系統(tǒng)/服務(wù)器12訪問的可用介質(zhì),包括易失性和非易失性介質(zhì),可移動 的和不可移動的介質(zhì)。
[0026] 系統(tǒng)存儲器28可以包括易失性存儲器形式的計算機(jī)系統(tǒng)可讀介質(zhì),例如隨機(jī)存 取存儲器(RAM) 30和/或高速緩存存儲器32。計算機(jī)系統(tǒng)/服務(wù)器12可以進(jìn)一步包括其 他可移動/不可移動的、易失性/非易失性計算機(jī)系統(tǒng)存儲介質(zhì)。僅作為舉例,存儲系統(tǒng)34 可以用于讀寫不可移動的、非易失性磁介質(zhì)(圖1未顯示,通常稱為"硬盤驅(qū)動器")。盡管 圖1中未示出,可以提供用于對可移動非易失性磁盤(例如"軟盤")讀寫的磁盤驅(qū)動器, 以及對可移動非易失性光盤(例如⑶-ROM,DVD-ROM或者其他光介質(zhì))讀寫的光盤驅(qū)動器。 在這些情況下,每個驅(qū)動器可以通過一個或者多個數(shù)據(jù)介質(zhì)接口與總線18相連。存儲器28 可以包括至少一個程序產(chǎn)品,該程序產(chǎn)品具有一組(例如至少一個)程序模塊,這些程序模 塊被配置以執(zhí)行本發(fā)明各實施方式的功能。
[0027] 具有一組(至少一個)程序模塊42的程序/實用工具40,可以存儲在例如存儲器 28中,這樣的程序模塊42包括--但不限于--操作系統(tǒng)、一個或者多個應(yīng)用程序、其他 程序模塊以及程序數(shù)據(jù),這些示例中的每一個或某種組合中可能包括網(wǎng)絡(luò)環(huán)境的實現(xiàn)。程 序模塊42通常執(zhí)行本發(fā)明所描述的實施方式中的功能和/或方法。
[0028] 計算機(jī)系統(tǒng)/服務(wù)器12也可以與一個或多個外部設(shè)備14 (例如鍵盤、指向設(shè)備、 顯示器24等)通信,還可與一個或者多個使得用戶能與該計算機(jī)系統(tǒng)/服務(wù)器12交互的 設(shè)備通信,和/或與使得該計算機(jī)系統(tǒng)/服務(wù)器12
當(dāng)前第1頁1 2 3 4 5 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1