本發明專利技術提供一種分布式編譯方法、裝置、電子設備及存儲介質,屬于數據處理技術領域,所述方法包括:將源代碼文件發送至服務端進行編譯及匯編處理,得到服務端返回的編譯結果,編譯結果包含編譯后目標文件的信息;基于編譯結果,創建對應的偽文件,偽文件包含編譯結果文件的復建方法;在獲取到所有編譯結果對應的偽文件之后,向服務端發送鏈接命令,鏈接命令指示服務端對所有目標文件進行文件鏈接操作;接收服務端返回的可執行文件。本發明專利技術避免了中間文件在客戶端與服務端之間多次復制,從而減少文件傳輸所需的網絡負載,并提高分布式編譯效率。
【技術實現步驟摘要】
本專利技術涉及數據處理,尤其涉及一種分布式編譯方法、裝置、電子設備及存儲介質。
技術介紹
1、編譯是利用編譯程序將源語言編寫的源程序翻譯為計算機可以識別的二進制語言的過程。編譯的過程主要分為四大步,預處理、編譯、匯編和鏈接:預處理是處理源代碼中的預處理指令,如展開頭文件、替換宏定義、刪除注釋等,得到.i格式的預處理源代碼文件;編譯是對經過預處理的源代碼進行詞法分析、語法分析、語義分析等一系列操作,生成中間代碼后轉換成匯編代碼,得到.s格式的匯編文件;匯編是將匯編代碼翻譯成機器碼,得到.o格式的目標文件;鏈接是將多個目標文件以及可能用到的庫文件合并在一起,生成最終的可執行文件。在編譯大型軟件時,因單機性能不足,往往需要調用多臺機器并行。在當前的分布式編譯系統中,可以實現將某些步驟分布到遠程機器運行,并將編譯結果發送回本地,用于進一步處理。
2、圖1是現有技術中分布式編譯方法的流程示意圖,如圖1所示,客戶端是負責協調工作,提出任務需求的機器設備;服務端是負責進行真正的編譯處理的機器設備。客戶端將需要編譯的源代碼文件發送至服務端,服務端完成編譯及匯編之后,將中間結果(目標文件)返回至客戶端,以幫助客戶端進行協調工作,在文件鏈接時客戶端再將這些目標文件發送至服務端完成文件鏈接操作。這種方式造成中間文件在客戶端與服務端之間多次復制,增加了網絡負載,降低分布式編譯效率。
3、因此,如何降低分布式編譯過程中的網絡負載,提高分布式編譯效率成為亟待解決的技術問題。
技術實現思路
<
p>1、本專利技術提供一種分布式編譯方法、裝置、電子設備及存儲介質,用以解決現有技術中分布式編譯過程網絡負載高、效率低的缺陷。2、本專利技術提供一種分布式編譯方法,應用于客戶端,包括如下步驟:
3、將源代碼文件發送至服務端進行編譯及匯編處理,得到所述服務端返回的編譯結果,所述編譯結果包含編譯所得目標文件的信息;
4、基于所述編譯結果,創建所述編譯結果對應的偽文件,所述偽文件包含所述編譯結果所得目標文件的復建方法;
5、在獲取到所有編譯結果對應的偽文件之后,向所述服務端發送鏈接命令,所述鏈接命令用于指示所述服務端對所述編譯結果所對應的目標文件進行文件鏈接操作;
6、接收所述服務端返回的可執行文件。
7、根據本專利技術提供的一種分布式編譯方法,在所述基于所述編譯結果,創建所述編譯結果對應的偽文件之后,還包括:
8、在接收到對所述偽文件的第一調用指令后,執行如下步驟,其中,所述第一調用指令是用于指示以指定方式打開指定文件的指令:
9、若所述第一調用指令指示以第一方式打開所述偽文件,則在基于所述偽文件中的復建方法,恢復得到真實目標文件后,以所述第一方式打開所述真實目標文件,所述第一方式是指在打開所述指定文件后,執行寫入操作時根據寫入操作要求的方式寫入;
10、若所述第一調用指令指示以第二方式打開所述偽文件,則在基于所述偽文件中的復建方法,恢復得到真實目標文件后,以所述第二方式打開所述真實目標文件,所述第二方式是指在打開所述指定文件時,若所述指定文件不存在,則創建一個新文件;
11、若所述第一調用指令指示以第三方式打開所述偽文件,則返回錯誤信息,所述第三方式是指若所述指定文件是一個目錄文件,則調用所述目錄文件,否則返回錯誤信息;
12、若所述第一調用指令指示以第四方式打開所述偽文件,則刪除所述偽文件,創建一個新的真實目標文件后,打開所述真實目標文件,所述第四方式是指在打開指定文件時,將所述指定文件的長度截斷為零字節。
13、根據本專利技術提供的一種分布式編譯方法,在所述基于所述編譯結果,創建所述編譯結果對應的偽文件之后,還包括:
14、在接收到對所述偽文件的第二調用指令后,返回所述偽文件的狀態信息,所述狀態信息包括文件類型、創建時間、訪問時間、修改時間、文件大小和用戶信息;
15、其中,所述第二調用指令是用于獲取指定文件的狀態信息的指令,所述文件類型是普通文件,所述文件大小是所述偽文件對應的目標文件的文件大小,所述用戶信息是所述偽文件對應的目標文件的用戶信息。
16、根據本專利技術提供的一種分布式編譯方法,在所述基于所述編譯結果,創建所述編譯結果對應的偽文件之后,還包括:
17、在接收到對所述偽文件的第三調用指令后,執行如下步驟,其中,所述第三調用指令是用于指示將指定文件的大小設置為指定值的指令:
18、若所述指定值為零,則刪除所述偽文件后,創建一個空的真實目標文件;
19、若所述指定值不為零,則在基于所述偽文件中的復建方法,恢復得到真實目標文件后,對所述真實目標文件進行截斷或擴展。
20、根據本專利技術提供的一種分布式編譯方法,所述向所述服務端發送鏈接命令,包括:
21、若沒有存儲所述編譯結果對應的真實目標文件,則將所述鏈接命令發送至所述服務端;
22、若存儲有所述所有編譯結果中的任一個編譯結果對應的真實目標文件,則將所述真實目標文件和所述鏈接命令發送至所述服務端,以供所述服務端基于所述真實目標文件進行文件鏈接操作。
23、本專利技術還提供一種分布式編譯方法,應用于服務端,包括如下步驟:
24、在接收到客戶端發送的源代碼文件之后,對所述源代碼文件進行編譯及匯編處理,得到基于所述源代碼文件編譯及匯編得到的目標文件并存儲;
25、在接收到所述客戶端發送的鏈接命令之后,對相應的目標文件進行文件鏈接操作,得到可執行文件;
26、將所述可執行文件返回至所述客戶端。
27、本專利技術還提供一種分布式編譯裝置,包括如下模塊:
28、文件發送模塊,用于:將源代碼文件發送至服務端進行編譯及匯編處理,得到所述服務端返回的編譯結果,所述編譯結果包含編譯所得目標文件的信息;偽文件創建模塊,用于:基于所述編譯結果,創建所述編譯結果對應的偽文件,所述偽文件包含所述編譯所得目標文件的復建方法;命令發送模塊,用于:在獲取到所有編譯結果對應的偽文件之后,向所述服務端發送鏈接命令,所述鏈接命令用于指示所述服務端對所述所有編譯結果對應的目標文件進行文件鏈接操作;接收模塊,用于:接收所述服務端返回的可執行文件;或者,包括如下模塊:
29、編譯模塊,用于:在接收到客戶端發送的源代碼文件之后,對所述源代碼文件進行編譯及匯編處理,得到基于所述源代碼文件編譯及匯編得到的目標文件并存儲;鏈接模塊,用于:在接收到所述客戶端發送的鏈接命令之后,對相應的目標文件進行文件鏈接操作,得到可執行文件;發送模塊,用于:將所述可執行文件返回至所述客戶端。
30、本專利技術還提供一種電子設備,包括存儲器、處理器及存儲在存儲器上并可在處理器上運行的計算機程序,所述處理器執行所述計算機程序時實現如上述任一種所述分布式編譯方法。
31、本專利技術還提供一種非暫態計算機可讀存儲介質,其上存儲有計算機程序本文檔來自技高網
...
【技術保護點】
1.一種分布式編譯方法,其特征在于,應用于客戶端,包括:
2.根據權利要求1所述的分布式編譯方法,其特征在于,在所述基于所述編譯結果,創建所述編譯結果對應的偽文件之后,還包括:
3.根據權利要求1所述的分布式編譯方法,其特征在于,在所述基于所述編譯結果,創建所述編譯結果對應的偽文件之后,還包括:
4.根據權利要求1所述的分布式編譯方法,其特征在于,在所述基于所述編譯結果,創建所述編譯結果對應的偽文件之后,還包括:
5.根據權利要求2-4中任一項所述的分布式編譯方法,其特征在于,所述向所述服務端發送鏈接命令,包括:
6.一種分布式編譯方法,其特征在于,應用于服務端,包括:
7.一種分布式編譯裝置,其特征在于,包括:
8.一種電子設備,包括存儲器、處理器及存儲在所述存儲器上并在所述處理器上運行的計算機程序,其特征在于,所述處理器執行所述計算機程序時實現如權利要求1至5任一項所述分布式編譯方法,或者實現如權利要求6所述分布式編譯方法。
9.一種非暫態計算機可讀存儲介質,其上存儲有計算機程序,其特征在于,所述計算機程序被處理器執行時實現如權利要求1至5任一項所述分布式編譯方法,或者實現如權利要求6所述分布式編譯方法。
10.一種計算機程序產品,包括計算機程序,其特征在于,所述計算機程序被處理器執行時實現如權利要求1至5任一項所述分布式編譯方法,或者實現如權利要求6所述分布式編譯方法。
...
【技術特征摘要】
1.一種分布式編譯方法,其特征在于,應用于客戶端,包括:
2.根據權利要求1所述的分布式編譯方法,其特征在于,在所述基于所述編譯結果,創建所述編譯結果對應的偽文件之后,還包括:
3.根據權利要求1所述的分布式編譯方法,其特征在于,在所述基于所述編譯結果,創建所述編譯結果對應的偽文件之后,還包括:
4.根據權利要求1所述的分布式編譯方法,其特征在于,在所述基于所述編譯結果,創建所述編譯結果對應的偽文件之后,還包括:
5.根據權利要求2-4中任一項所述的分布式編譯方法,其特征在于,所述向所述服務端發送鏈接命令,包括:
6.一種分布式編譯方法,其特征在于,應用于服務端,包括:
7...
【專利技術屬性】
技術研發人員:屈晟,蘇運強,武延軍,
申請(專利權)人:中國科學院軟件研究所,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。