[發(fā)明專利]一種C++程序編譯方法和裝置有效
| 申請?zhí)枺?/td> | 201811569117.6 | 申請日: | 2018-12-21 |
| 公開(公告)號: | CN109614106B | 公開(公告)日: | 2022-04-19 |
| 發(fā)明(設(shè)計)人: | 郭凱 | 申請(專利權(quán))人: | 北京龍創(chuàng)悅動網(wǎng)絡(luò)科技有限公司 |
| 主分類號: | G06F8/41 | 分類號: | G06F8/41 |
| 代理公司: | 北京鼎真知識產(chǎn)權(quán)代理事務(wù)所(普通合伙) 11815 | 代理人: | 洪波 |
| 地址: | 100088 北京市*** | 國省代碼: | 北京;11 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 c++ 程序 編譯 方法 裝置 | ||
本發(fā)明提供一種C++程序編譯方法,該方法包括獲取多個cpp文件,并對所述多個cpp文件進行合并算法處理,生成待編譯的目標(biāo)cpp文件,最后對所述目標(biāo)cpp文件進行編譯。該方法避免在對大量的cpp文件編譯時,需要對每一個cpp文件都進行單獨的預(yù)處理、編譯、匯編和產(chǎn)生目標(biāo)鏈接的編譯過程,直接對合并后的cpp文件進行統(tǒng)一的編譯,節(jié)省了各種系統(tǒng)資源以及大量的時間開銷和系統(tǒng)開銷,加速了C++程序的編譯進程,提高了系統(tǒng)的性能。
技術(shù)領(lǐng)域
本發(fā)明涉及計算機技術(shù)領(lǐng)域,特別是涉及一種C++程序編譯方法和裝置。
背景技術(shù)
編譯C++文件通常使用編譯器,比如采用clang,gcc等C++編譯器對其進行編譯。在編譯多個C++文件時,比如2000多個甚至更多個文件時,現(xiàn)有編譯器是對C++文件逐個編譯,這樣會消耗大量的時間。C++編譯器在編譯文件的時候,每編譯一個文件就會啟動一個進程,加載各種系統(tǒng)資源會產(chǎn)生大量的時間開銷和系統(tǒng)開銷。
目前,對大量的C++文件進行編譯,主要使用分布式編譯技術(shù),把C++文件發(fā)送到不同的機器進行編譯,最后返回結(jié)果集成。這種方式需要第三方分布式軟件的支持,并消耗大量的硬件環(huán)境,比如編譯2000多個文件,至少需要10臺機器,才能提高編譯速度。
因此,在盡量節(jié)約硬件編譯環(huán)境和編譯時間開銷的前提下,提高C++文件的編譯速度是目前急需解決的技術(shù)問題。
發(fā)明內(nèi)容
為了提高C++文件的編譯速度,本發(fā)明提供了一種C++程序編譯加速方法,以解決在盡量節(jié)約硬件編譯環(huán)境和編譯時間開銷的前提下,提高C++文件編譯速度的問題。該方法通過采用合并編譯方式,將大量C++文件合并成一個文件,再對合并后的文件進行編譯,這樣就只需要加載一次系統(tǒng)資源,對C++文件進行集中編譯,可極大的縮短編譯時間。
該方法的具體技術(shù)方案如下:
一種C++程序編譯方法,其特征在于,所述方法包括如下步驟:
獲取多個cpp文件;
對所述多個cpp文件進行合并算法處理,生成待編譯的目標(biāo)cpp文件;
對所述目標(biāo)cpp文件進行編譯。
進一步地,對所述cpp文件進行合并算法處理,生成待編譯的目標(biāo)cpp文件之前,包括如下步驟:
將每個所述cpp文件生成抽象語法樹;
判斷所述抽象語法樹之間是否包括相同的內(nèi)部變量和/或函數(shù)。
進一步地,若所述抽象語法樹之間不包括相同的內(nèi)部變量和/或函數(shù),則對所述多個cpp文件進行合并算法處理,生成待編譯的目標(biāo)cpp文件。
進一步地,所述方法還包括,
若所述抽象語法樹之間包括相同的內(nèi)部變量和/或函數(shù),則生成錯誤信息;
對所述錯誤信息進行修改;
其中,所述錯誤信息包括具有相同內(nèi)部變量和/或函數(shù)的抽象對象樹所對應(yīng)的文件的文件名、內(nèi)部變量名和/或函數(shù)名、所述內(nèi)部變量名和/或函數(shù)名所在文件的行數(shù)。
進一步地,所述合并算法處理包括如下步驟:
采用include偽指令調(diào)用所述cpp文件;
將調(diào)用的所述cpp文件添加至預(yù)先設(shè)置的cpp文件,生成待編譯的目標(biāo)cpp文件。
進一步地,判斷所述抽象語法樹之間是否包括相同的內(nèi)部變量和/或函數(shù),具體包括如下步驟:
獲取抽象語法樹的節(jié)點信息;
遍歷所述節(jié)點信息并判斷其是否滿足預(yù)設(shè)的判斷條件;
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于北京龍創(chuàng)悅動網(wǎng)絡(luò)科技有限公司,未經(jīng)北京龍創(chuàng)悅動網(wǎng)絡(luò)科技有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201811569117.6/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 一種跨操作系統(tǒng)平臺的機群系統(tǒng)監(jiān)控和管理方法
- 由C/C++生成JavaWeb服務(wù)的方法及裝置
- 代碼轉(zhuǎn)換方法與裝置
- 一種WPF和C++的交互方法
- 一種在C++程序中實現(xiàn)反射的方法、存儲介質(zhì)及計算設(shè)備
- 用于生成C/C++庫與解釋語言之間的綁定的方法,并且執(zhí)行所述方法以轉(zhuǎn)換三維(3D)模型
- 基于模塊定義圖的無人機飛行控制系統(tǒng)的C++代碼生成方法
- 基于銀河銳華操作系統(tǒng)的C++適配層的裝置
- 一種C++模塊接口的調(diào)用方法及裝置
- 在虛擬機中執(zhí)行C++任務(wù)的方法、裝置、電子設(shè)備及介質(zhì)





