本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別是涉及一種一體化云編譯方法和系統(tǒng)。
背景技術(shù):
隨著各平臺(tái)項(xiàng)目及用戶的增多,用戶對(duì)于軟件的需求也越來(lái)越多,且不同用戶之間的需求也不同。研發(fā)人員在處理這些碎片化的差異性需求時(shí)顯得繁瑣、費(fèi)時(shí),需針對(duì)不同用戶的需求發(fā)布不同的軟件升級(jí)包,且需要研發(fā)人員投入大量人力進(jìn)行維護(hù),浪費(fèi)資源。
技術(shù)實(shí)現(xiàn)要素:
基于此,有必要提供一種一體化云編譯方法,能夠在滿足用戶對(duì)軟件的不同需求的同時(shí),減少人力,節(jié)約資源。
此外,還有必要提供一種一體化云編譯系統(tǒng),能夠在滿足用戶對(duì)軟件的不同需求的同時(shí),減少人力,節(jié)約資源。
一種一體化云編譯方法,包括以下步驟:
接收約定格式的需求文件;
解析所述需求文件并存儲(chǔ)解析結(jié)果;
根據(jù)所述解析結(jié)果編譯生成平臺(tái)軟件;
根據(jù)所述解析結(jié)果從預(yù)設(shè)的組件池中選擇對(duì)應(yīng)的組件對(duì)所述平臺(tái)軟件進(jìn)行組裝;
將組裝后的平臺(tái)軟件進(jìn)行打包。
在其中一個(gè)實(shí)施例中,所述需求文件根據(jù)用戶選擇的需求模塊生成;
所述解析所述需求文件并存儲(chǔ)解析結(jié)果,具體包括以下步驟:
載入所述需求文件;
解析所述需求文件的各個(gè)節(jié)點(diǎn),并獲取各個(gè)節(jié)點(diǎn)的名稱及屬性值;所述節(jié)點(diǎn)的名稱為所述用戶選擇的需求模塊名稱,所述節(jié)點(diǎn)的屬性值為所述用戶選擇 的需求模塊的具體內(nèi)容。
在其中一個(gè)實(shí)施例中,所述根據(jù)所述解析結(jié)果編譯生成平臺(tái)軟件,具體包括以下步驟:
將所述解析結(jié)果傳遞給預(yù)處理腳本;
通過(guò)所述預(yù)處理腳本按照所述解析結(jié)果設(shè)置編譯腳本中對(duì)應(yīng)的功能宏;
通過(guò)所述編譯腳本中的功能宏選擇對(duì)應(yīng)的代碼編譯生成平臺(tái)軟件。
在其中一個(gè)實(shí)施例中,所述根據(jù)所述解析結(jié)果從預(yù)設(shè)的組件池中選擇對(duì)應(yīng)的組件對(duì)所述平臺(tái)軟件進(jìn)行組裝,具體包括以下步驟:
根據(jù)所述解析結(jié)果從預(yù)設(shè)的組件池中選擇對(duì)應(yīng)的組件,并將所述組件存儲(chǔ)在所述平臺(tái)軟件中對(duì)應(yīng)的特定分區(qū)的目錄中;
將所述組件編譯到所述平臺(tái)軟件;
制作生成各個(gè)特定分區(qū)對(duì)應(yīng)的鏡像文件。
在其中一個(gè)實(shí)施例中,所述方法還包括以下步驟:
將所述各個(gè)特定分區(qū)對(duì)應(yīng)的鏡像文件打包生成bin文件。
一種一體化云編譯系統(tǒng),包括:
接收模塊,用于接收約定格式的需求文件;
解析模塊,用于解析所述需求文件并存儲(chǔ)解析結(jié)果;
編譯模塊,用于根據(jù)所述解析結(jié)果編譯生成平臺(tái)軟件;
組裝模塊,用于根據(jù)所述解析結(jié)果從預(yù)設(shè)的組件池中選擇對(duì)應(yīng)的組件對(duì)所述平臺(tái)軟件進(jìn)行組裝;
打包模塊,用于將組裝后的平臺(tái)軟件進(jìn)行打包。
在其中一個(gè)實(shí)施例中,所述需求文件根據(jù)用戶選擇的需求模塊生成,所述解析模塊具體包括:
載入單元,用于載入所述需求文件;
獲取單元,用于解析所述需求文件的各個(gè)節(jié)點(diǎn),并獲取各個(gè)節(jié)點(diǎn)的名稱及屬性值;所述節(jié)點(diǎn)的名稱為所述用戶選擇的需求模塊名稱,所述節(jié)點(diǎn)的屬性值為所述用戶選擇的需求模塊的具體內(nèi)容。
在其中一個(gè)實(shí)施例中,所述編譯模塊具體包括:
傳遞單元,用于將所述解析結(jié)果傳遞給預(yù)處理腳本;
設(shè)置單元,用于通過(guò)所述預(yù)處理腳本按照所述解析結(jié)果設(shè)置編譯腳本中對(duì)應(yīng)的功能宏;
選擇單元,用于通過(guò)所述編譯腳本中的功能宏選擇對(duì)應(yīng)的代碼編譯生成平臺(tái)軟件。
在其中一個(gè)實(shí)施例中,所述組裝模塊具體包括:
存儲(chǔ)單元,用于根據(jù)所述解析結(jié)果從預(yù)設(shè)的組件池中選擇對(duì)應(yīng)的組件,并將所述組件存儲(chǔ)在所述平臺(tái)軟件中對(duì)應(yīng)的特定分區(qū)的目錄中;
編譯單元,用于將所述組件編譯到所述平臺(tái)軟件;
制作單元,用于制作生成各個(gè)特定分區(qū)對(duì)應(yīng)的鏡像文件。
在其中一個(gè)實(shí)施例中,所述打包模塊還用于將所述各個(gè)特定分區(qū)對(duì)應(yīng)的鏡像文件打包生成bin文件。
上述一體化云編譯方法和系統(tǒng),能自動(dòng)根據(jù)用戶需求從預(yù)設(shè)的組件池中選擇組件對(duì)軟件進(jìn)行組裝,可隨時(shí)滿足用戶對(duì)軟件的需求,無(wú)需研發(fā)人員對(duì)用戶的差異性需求進(jìn)行處理,減少人力,節(jié)約資源,且能減少軟件發(fā)布出錯(cuò)的可能性。此外,研發(fā)人員可直接對(duì)功能組件進(jìn)行開發(fā)形成自己的軟件產(chǎn)品,更為方便快捷。
附圖說(shuō)明
圖1為一個(gè)實(shí)施例中一體化云編譯方法的流程示意圖;
圖2為一個(gè)實(shí)施例中解析需求文件并存儲(chǔ)解析結(jié)果步驟的流程示意圖;
圖3為一個(gè)實(shí)施例中根據(jù)解析結(jié)果編譯生成平臺(tái)軟件步驟的流程示意圖;
圖4為一個(gè)實(shí)施例中根據(jù)解析結(jié)果為平臺(tái)軟件定制特定分區(qū)步驟的流程示意圖;
圖5為一個(gè)實(shí)施例中一體化云編譯系統(tǒng)的結(jié)構(gòu)示意圖;
圖6為一個(gè)實(shí)施例中編譯模塊的內(nèi)部結(jié)構(gòu)示意圖;
圖7為一個(gè)實(shí)施例中組裝模塊的內(nèi)部結(jié)構(gòu)示意圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
如圖1所示,一種一體化云編譯方法,包括以下步驟:
步驟S110,接收約定格式的需求文件。
具體的,可將瀏覽器作為服務(wù)器的一個(gè)云端窗口,用戶通過(guò)該云端窗口可根據(jù)自身需求選擇不同的需求模塊進(jìn)行定制。選擇完成后,根據(jù)用戶的選擇將生成對(duì)應(yīng)的約定格式的xml(Extensible Markup Language,可擴(kuò)展標(biāo)記語(yǔ)言)需求文件,該約定格式可為針對(duì)不同的需求模塊,xml需求文件中將生成不同的對(duì)應(yīng)節(jié)點(diǎn)。節(jié)點(diǎn)包括節(jié)點(diǎn)名稱和節(jié)點(diǎn)屬性值,節(jié)點(diǎn)名稱為用戶選擇的需求模塊名稱,節(jié)點(diǎn)的屬性值為用戶選擇的需求模塊的具體內(nèi)容。服務(wù)器接收由云端窗口發(fā)送的該約定格式的需求文件,并根據(jù)該需求文件編譯生成對(duì)應(yīng)的軟件升級(jí)包。
步驟S120,解析需求文件并存儲(chǔ)解析結(jié)果。
具體的,服務(wù)器接收前端發(fā)送的約定格式的xml需求文件后,可利用python(蟒蛇語(yǔ)言)腳本解析該需求文件,并將解析結(jié)果進(jìn)行存儲(chǔ)。如圖2所示,在進(jìn)一步的實(shí)施例中,步驟S120解析需求文件并存儲(chǔ)解析結(jié)果,具體包括以下步驟:
步驟S210,載入所述需求文件。
具體的,可使用python腳本中的minidom模塊載入xml需求文件,通過(guò)先建立一個(gè)dom對(duì)象,然后讀取xml需求文件。
步驟S220,解析需求文件的各個(gè)節(jié)點(diǎn),并獲取各個(gè)節(jié)點(diǎn)的名稱及屬性值。
具體的,載入xml需求文件后,解析xml需求文件的各個(gè)節(jié)點(diǎn),獲取各個(gè)節(jié)點(diǎn)的名稱及屬性值。節(jié)點(diǎn)名稱為用戶選擇的需求模塊名稱,節(jié)點(diǎn)的屬性值為用戶選擇的需求模塊的具體內(nèi)容,二者一一對(duì)應(yīng),例如,用戶選擇需求模塊A,需求模塊A中包含功能B、功能C和功能D,則解析需求文件獲取的節(jié)點(diǎn)名稱為需求模塊A,節(jié)點(diǎn)屬性值包括功能B、功能C、功能D。本實(shí)施例中,根據(jù)對(duì) 需求文件進(jìn)行解析,根據(jù)解析結(jié)果可獲取用戶選擇的需求模塊及需求模塊對(duì)應(yīng)的功能,并選擇對(duì)應(yīng)的組件編譯生成軟件升級(jí)包,針對(duì)不同的用戶能滿足其不同的需求。
步驟S130,根據(jù)解析結(jié)果編譯生成平臺(tái)軟件。
具體的,服務(wù)器根據(jù)解析結(jié)果修改相關(guān)腳本,并設(shè)置相關(guān)功能宏,然后進(jìn)行編譯生成平臺(tái)軟件。生成的平臺(tái)軟件一般只能滿足基本功能,類似于公版軟件。如圖3所示,在進(jìn)一步的實(shí)施例中,步驟S130根據(jù)解析結(jié)果編譯生成平臺(tái)軟件,具體包括以下步驟:
步驟S310,將解析結(jié)果傳遞給預(yù)處理腳本。
具體的,服務(wù)器利用python腳本解析xml需求文件后,將獲取的解析結(jié)果傳遞給預(yù)處理腳本。預(yù)處理腳本主要用于配置軟件基本參數(shù)及初始化路徑。
步驟S320,通過(guò)預(yù)處理腳本按照解析結(jié)果設(shè)置編譯腳本中對(duì)應(yīng)的功能宏。
具體的,預(yù)處理腳本根據(jù)解析結(jié)果設(shè)置編譯腳本中對(duì)應(yīng)的功能宏,功能宏主要用于控制對(duì)應(yīng)的功能模塊代碼是否被編譯到平臺(tái)軟件中。例如,當(dāng)解析結(jié)果中包含功能A,則預(yù)處理腳本設(shè)置編譯腳本中的功能A的功能宏開啟,則功能A的實(shí)現(xiàn)代碼將被編譯到平臺(tái)軟件中。
步驟S330,通過(guò)編譯腳本中的功能宏選擇對(duì)應(yīng)的代碼編譯生成平臺(tái)軟件。
具體的,編譯腳本根據(jù)預(yù)處理腳本設(shè)置的功能宏選擇對(duì)應(yīng)的代碼編譯生成平臺(tái)軟件,該功能宏控制的功能模塊除了包含軟件的最基本應(yīng)用,例如啟動(dòng)、設(shè)置等功能,還包含一些無(wú)法組件化的功能模塊,當(dāng)功能宏開啟,則選擇對(duì)應(yīng)的代碼編譯進(jìn)平臺(tái)軟件??衫胢akefile編譯規(guī)則編譯出能運(yùn)行的軟件包。通過(guò)編寫makefile文件,可制定軟件的編譯、連接等規(guī)則,包括軟件中哪些源文件需要編譯以及如何編譯、需要?jiǎng)?chuàng)建那些庫(kù)文件以及如何創(chuàng)建這些庫(kù)文件、如何最后產(chǎn)生需要的可執(zhí)行文件等,然后只需利用make命令即可自動(dòng)完成編譯,生成平臺(tái)軟件。編譯生成的平臺(tái)軟件一般只滿足基本功能。本實(shí)施例中,可根據(jù)解析結(jié)果自動(dòng)化編譯生成滿足基本功能的平臺(tái)軟件,方便后續(xù)對(duì)其進(jìn)行組裝打包,生成滿足用戶需求的軟件升級(jí)包。
步驟S140,根據(jù)解析結(jié)果從預(yù)設(shè)的組件池中選擇對(duì)應(yīng)的組件對(duì)平臺(tái)軟件進(jìn) 行組裝。
具體的,服務(wù)器根據(jù)解析結(jié)果從預(yù)設(shè)的組件池中選取與解析結(jié)果對(duì)應(yīng)的組件對(duì)平臺(tái)進(jìn)行組裝。組件池中包含能夠滿足各個(gè)功能的組件,研發(fā)人員在開發(fā)的過(guò)程中只需創(chuàng)建與功能對(duì)應(yīng)的組件,并將之放入組件池中,對(duì)應(yīng)不同的用戶選擇不同的組件對(duì)軟件進(jìn)行組裝,即可滿足不同用戶的需求。
步驟S150,將組裝后的平臺(tái)軟件進(jìn)行打包。
具體的,服務(wù)器將組裝后的平臺(tái)軟件進(jìn)行打包,生成軟件升級(jí)包,用戶利用該軟件升級(jí)包即可升級(jí)自己的軟件,滿足其需求。
上述一體化云編譯方法,能自動(dòng)根據(jù)用戶需求從預(yù)設(shè)的組件池中選擇組件對(duì)軟件進(jìn)行組裝,可隨時(shí)滿足用戶對(duì)軟件的需求,無(wú)需研發(fā)人員對(duì)用戶的差異性需求進(jìn)行處理,減少人力,節(jié)約資源,且能減少軟件發(fā)布出錯(cuò)的可能性。此外,研發(fā)人員可直接對(duì)功能組件進(jìn)行開發(fā)形成自己的軟件產(chǎn)品,更為方便快捷。
如圖4所示,在一個(gè)實(shí)施例中,步驟根據(jù)解析結(jié)果從預(yù)設(shè)的組件池中選擇對(duì)應(yīng)的組件對(duì)平臺(tái)軟件進(jìn)行組裝,具體包括以下步驟:
步驟S410,根據(jù)解析結(jié)果從預(yù)設(shè)的組件池中選擇對(duì)應(yīng)的組件,并將組件存儲(chǔ)在平臺(tái)軟件中對(duì)應(yīng)的特定分區(qū)的目錄中。
具體的,可預(yù)先劃分軟件的特定分區(qū),例如可劃分service、config、database、customer、system等幾個(gè)特定分區(qū),service分區(qū)一般提供軟件或系統(tǒng)相關(guān)的核心服務(wù),用于存儲(chǔ)核心程序及其依賴的庫(kù)文件等;config分區(qū)一般存儲(chǔ)基本配置信息;database分區(qū)一般存儲(chǔ)業(yè)務(wù)相關(guān)的數(shù)據(jù)文件;customer一般存儲(chǔ)用戶的定制信息;system分區(qū)一般存儲(chǔ)操作系統(tǒng)及預(yù)裝系統(tǒng)的應(yīng)用程序,包括系統(tǒng)組件、字件、語(yǔ)言包、系統(tǒng)平臺(tái)運(yùn)行框架及平臺(tái)運(yùn)行庫(kù)等。針對(duì)不同的軟件及不同用戶,可劃分不同的特定分區(qū)以滿足相應(yīng)的業(yè)務(wù)需求。
服務(wù)器選擇對(duì)應(yīng)的組件,并將該組件存儲(chǔ)在平臺(tái)軟件中對(duì)應(yīng)的特定分區(qū)的目錄中。例如,用戶選擇了A型號(hào)的Tuner(校音器),根據(jù)解析需求文件獲取到的解析結(jié)果,服務(wù)器將在組件池中選擇Tuner型號(hào)為A的驅(qū)動(dòng)庫(kù)文件,并將其放到相應(yīng)的特定分區(qū)目錄中存儲(chǔ)。
步驟S420,將組件編譯到平臺(tái)軟件。
具體的,服務(wù)器根據(jù)解析結(jié)果選擇對(duì)應(yīng)的組件并存儲(chǔ)到對(duì)應(yīng)的特定分區(qū)目錄后,將組件編譯到平臺(tái)軟件中。可利用預(yù)先編寫的makefile編譯規(guī)則進(jìn)行編譯。
步驟S430,制作生成各個(gè)特定分區(qū)對(duì)應(yīng)的鏡像文件。
具體的,編譯完成后,可利用mkuserimg、make_ext4fs等制作鏡像工具將幾個(gè)特定分區(qū)制作并生成對(duì)應(yīng)的鏡像文件,例如生成service.img、config.img、database.img、customer.img、system.img等與特定分區(qū)對(duì)應(yīng)的鏡像文件。當(dāng)生成的特定分區(qū)的鏡像文件過(guò)大時(shí),可利用split等切分指令對(duì)鏡像文件進(jìn)行切分,可防止在后續(xù)燒錄特定分區(qū)的鏡像文件時(shí),由于鏡像文件過(guò)大而無(wú)法進(jìn)行燒錄的問(wèn)題。
上述方法還包括步驟將各個(gè)特定分區(qū)對(duì)應(yīng)的鏡像文件打包生成bin文件(二進(jìn)制文件)。
具體的,服務(wù)器可利用cat指令將生成的特定分區(qū)的鏡像文件打包生成bin文件,bin文件中可存儲(chǔ)有所有特定分區(qū)的分區(qū)信息及對(duì)應(yīng)的地址信息。采用該打包方式使得在燒錄特定分區(qū)的鏡像文件時(shí)可以更好地?zé)?,在升?jí)時(shí),只需打開bin文件即可自動(dòng)完成升級(jí),簡(jiǎn)便了用戶操作。
上述一體化云編譯方法,能自動(dòng)根據(jù)用戶需求從預(yù)設(shè)的組件池中選擇組件對(duì)軟件進(jìn)行組裝,可隨時(shí)滿足用戶對(duì)軟件的需求,無(wú)需研發(fā)人員對(duì)用戶的差異性需求進(jìn)行處理,減少人力,節(jié)約資源,且能減少軟件發(fā)布出錯(cuò)的可能性。此外,研發(fā)人員可直接對(duì)功能組件進(jìn)行開發(fā)形成自己的軟件產(chǎn)品,更為方便快捷。
如圖5所示,一種一體化云編譯系統(tǒng),包括接收模塊510、解析模塊520、編譯模塊530、組裝模塊540和打包模塊550。
接收模塊510,用于接收約定格式的需求文件。
具體的,可將瀏覽器作為服務(wù)器的一個(gè)云端窗口,用戶通過(guò)該云端窗口可根據(jù)自身需求選擇不同的需求模塊進(jìn)行定制。選擇完成后,根據(jù)用戶的選擇將生成對(duì)應(yīng)的約定格式的xml需求文件,該約定格式可為針對(duì)不同的需求模塊,xml需求文件中將生成不同的對(duì)應(yīng)節(jié)點(diǎn)。節(jié)點(diǎn)包括節(jié)點(diǎn)名稱和節(jié)點(diǎn)屬性值,節(jié)點(diǎn)名稱為用戶選擇的需求模塊名稱,節(jié)點(diǎn)的屬性值為用戶選擇的需求模塊的具體 內(nèi)容。服務(wù)器接收云端窗口發(fā)送的該約定格式的需求文件,并根據(jù)該需求文件編譯生成對(duì)應(yīng)的軟件升級(jí)包。
解析模塊520,用于解析需求文件并存儲(chǔ)解析結(jié)果。
具體的,服務(wù)器接收前端發(fā)送的約定格式的xml需求文件后,可利用python腳本解析該需求文件,并將解析結(jié)果進(jìn)行存儲(chǔ)。
解析模塊520包括載入單元522和獲取單元524。
載入單元522,用于載入需求文件。
具體的,可使用python腳本中的minidom模塊載入xml需求文件,通過(guò)先建立一個(gè)dom對(duì)象,然后讀取xml需求文件。
獲取單元524,用于解析需求文件的各個(gè)節(jié)點(diǎn),并獲取各個(gè)節(jié)點(diǎn)的名稱及屬性值。
具體的,載入xml需求文件后,解析xml需求文件的各個(gè)節(jié)點(diǎn),獲取各個(gè)節(jié)點(diǎn)的名稱及屬性值。節(jié)點(diǎn)名稱為用戶選擇的需求模塊名稱,節(jié)點(diǎn)的屬性值為用戶選擇的需求模塊的具體內(nèi)容,二者一一對(duì)應(yīng),例如,用戶選擇需求模塊A,需求模塊A中包含功能B、功能C和功能D,則解析需求文件獲取的節(jié)點(diǎn)名稱為需求模塊A,節(jié)點(diǎn)屬性值包括功能B、功能C、功能D。本實(shí)施例中,根據(jù)對(duì)需求文件進(jìn)行解析,根據(jù)解析結(jié)果可獲取用戶選擇的需求模塊及需求模塊對(duì)應(yīng)的功能,并選擇對(duì)應(yīng)的組件編譯生成軟件升級(jí)包,針對(duì)不同的用戶能滿足其不同的需求。
編譯模塊530,用于根據(jù)解析結(jié)果編譯生成平臺(tái)軟件。
具體的,服務(wù)器根據(jù)解析結(jié)果修改相關(guān)腳本,并設(shè)置相關(guān)功能宏,然后進(jìn)行編譯生成平臺(tái)軟件。生成的平臺(tái)軟件一般只能滿足基本功能,類似于公版軟件。如圖6所示,在進(jìn)一步的實(shí)施例中,編譯模塊530包括傳遞單元532、設(shè)置單元534和選擇單元536。
傳遞單元532,用于將解析結(jié)果傳遞給預(yù)處理腳本。
具體的,服務(wù)器利用python腳本解析xml需求文件后,將獲取的解析結(jié)果傳遞給預(yù)處理腳本。預(yù)處理腳本主要用于配置軟件基本參數(shù)及初始化路徑。
設(shè)置單元534,用于通過(guò)預(yù)處理腳本按照解析結(jié)果設(shè)置編譯腳本中對(duì)應(yīng)的功 能宏。
具體的,預(yù)處理腳本根據(jù)解析結(jié)果設(shè)置編譯腳本中對(duì)應(yīng)的功能宏,功能宏主要用于控制對(duì)應(yīng)的功能模塊代碼是否被編譯到平臺(tái)軟件中。例如,當(dāng)解析結(jié)果中包含功能A,則預(yù)處理腳本設(shè)置編譯腳本中的功能A的功能宏開啟,則功能A的實(shí)現(xiàn)代碼將被編譯到平臺(tái)軟件中。
選擇單元536,用于通過(guò)編譯腳本中的功能宏選擇對(duì)應(yīng)的代碼編譯生成平臺(tái)軟件。
具體的,編譯腳本根據(jù)預(yù)處理腳本設(shè)置的功能宏選擇對(duì)應(yīng)的代碼編譯生成平臺(tái)軟件,該功能宏控制的功能模塊除了包含軟件的最基本應(yīng)用,例如啟動(dòng)、設(shè)置等功能,還包含一些無(wú)法組件化的功能模塊,當(dāng)功能宏開啟,則選擇對(duì)應(yīng)的代碼編譯進(jìn)平臺(tái)軟件。可利用makefile編譯規(guī)則編譯出能運(yùn)行的軟件包。通過(guò)編寫makefile文件,可制定軟件的編譯、連接等規(guī)則,包括軟件中哪些源文件需要編譯以及如何編譯、需要?jiǎng)?chuàng)建那些庫(kù)文件以及如何創(chuàng)建這些庫(kù)文件、如何最后產(chǎn)生需要的可執(zhí)行文件等,然后只需利用make命令即可自動(dòng)完成編譯,生成平臺(tái)軟件。編譯生成的平臺(tái)軟件一般只滿足基本功能。本實(shí)施例中,可根據(jù)解析結(jié)果自動(dòng)化編譯生成滿足基本功能的平臺(tái)軟件,方便后續(xù)對(duì)其進(jìn)行組裝打包,生成滿足用戶需求的軟件升級(jí)包。
組裝模塊540,用于根據(jù)解析結(jié)果從預(yù)設(shè)的組件池中選擇對(duì)應(yīng)的組件對(duì)平臺(tái)軟件進(jìn)行組裝。
具體的,服務(wù)器根據(jù)解析結(jié)果從預(yù)設(shè)的組件池中選取與解析結(jié)果對(duì)應(yīng)的組件對(duì)平臺(tái)進(jìn)行組裝。組件池中包含能夠滿足各個(gè)功能的組件,研發(fā)人員在開發(fā)的過(guò)程中只需創(chuàng)建與功能對(duì)應(yīng)的組件,并將之放入組件池中,對(duì)應(yīng)不同的用戶選擇不同的組件對(duì)軟件進(jìn)行組裝,即可滿足不同用戶的需求。
打包模塊550,用于將組裝后的平臺(tái)軟件進(jìn)行打包。
具體的,服務(wù)器將組裝后的平臺(tái)軟件進(jìn)行打包,生成軟件升級(jí)包,用戶利用該軟件升級(jí)包即可升級(jí)自己的軟件,滿足其需求。
上述一體化云編譯體系統(tǒng),能自動(dòng)根據(jù)用戶需求從預(yù)設(shè)的組件池中選擇組件對(duì)軟件進(jìn)行組裝,可隨時(shí)滿足用戶對(duì)軟件的需求,無(wú)需研發(fā)人員對(duì)用戶的差 異性需求進(jìn)行處理,減少人力,節(jié)約資源,且能減少軟件發(fā)布出錯(cuò)的可能性。此外,研發(fā)人員可直接對(duì)功能組件進(jìn)行開發(fā)形成自己的軟件產(chǎn)品,更為方便快捷。
如圖7所示,在一個(gè)實(shí)施例中,組裝模塊540包括存儲(chǔ)單元542、編譯單元544和制作單元546。
存儲(chǔ)單元542,用于根據(jù)解析結(jié)果從預(yù)設(shè)的組件池中選擇對(duì)應(yīng)的組件,并將組件存儲(chǔ)在平臺(tái)軟件中對(duì)應(yīng)的特定分區(qū)的目錄中。
具體的,可預(yù)先劃分軟件的特定分區(qū),例如可劃分service、config、database、customer、system等幾個(gè)特定分區(qū),service分區(qū)一般提供軟件或系統(tǒng)相關(guān)的核心服務(wù),用于存儲(chǔ)核心程序及其依賴的庫(kù)文件等;config分區(qū)一般存儲(chǔ)基本配置信息;database分區(qū)一般存儲(chǔ)業(yè)務(wù)相關(guān)的數(shù)據(jù)文件;customer一般存儲(chǔ)用戶的定制信息;system分區(qū)一般存儲(chǔ)操作系統(tǒng)及預(yù)裝系統(tǒng)的應(yīng)用程序,包括系統(tǒng)組件、字件、語(yǔ)言包、系統(tǒng)平臺(tái)運(yùn)行框架及平臺(tái)運(yùn)行庫(kù)等。針對(duì)不同的軟件及不同用戶,可劃分不同的特定分區(qū)以滿足相應(yīng)的業(yè)務(wù)需求。
服務(wù)器選擇對(duì)應(yīng)的組件,并將該組件存儲(chǔ)在平臺(tái)軟件中對(duì)應(yīng)的特定分區(qū)的目錄中。例如,用戶選擇了A型號(hào)的Tuner(校音器),根據(jù)解析需求文件獲取到的解析結(jié)果,服務(wù)器將在組件池中選擇Tuner型號(hào)為A的驅(qū)動(dòng)庫(kù)文件,并將其放到相應(yīng)的特定分區(qū)目錄中存儲(chǔ)。
編譯單元544,用于將組件編譯到平臺(tái)軟件。
具體的,服務(wù)器根據(jù)解析結(jié)果選擇對(duì)應(yīng)的組件并存儲(chǔ)到對(duì)應(yīng)的特定分區(qū)目錄后,將組件編譯到平臺(tái)軟件中??衫妙A(yù)先編寫的makefile編譯規(guī)則進(jìn)行編譯。
制作單元546,用于制作生成各個(gè)特定分區(qū)對(duì)應(yīng)的鏡像文件。
具體的,編譯完成后,可利用mkuserimg、make_ext4fs等制作鏡像工具將幾個(gè)特定分區(qū)制作并生成對(duì)應(yīng)的鏡像文件,例如生成service.img、config.img、database.img、customer.img、system.img等與特定分區(qū)對(duì)應(yīng)的鏡像文件。當(dāng)生成的特定分區(qū)的鏡像文件過(guò)大時(shí),可利用split等切分指令對(duì)鏡像文件進(jìn)行切分,可防止在后續(xù)燒錄特定分區(qū)的鏡像文件時(shí),由于鏡像文件過(guò)大而無(wú)法進(jìn)行燒錄 的問(wèn)題。
打包模塊550還用于將各個(gè)特定分區(qū)對(duì)應(yīng)的鏡像文件打包生成bin文件。
具體的,服務(wù)器可利用cat指令將生成的特定分區(qū)的鏡像文件打包生成bin文件,bin文件中可存儲(chǔ)有所有特定分區(qū)的分區(qū)信息及對(duì)應(yīng)的地址信息。采用該打包方式使得在燒錄特定分區(qū)的鏡像文件時(shí)可以更好地?zé)?,在升?jí)時(shí),只需打開bin文件即可自動(dòng)完成升級(jí),簡(jiǎn)便了用戶操作。
上述一體化云編譯系統(tǒng),能自動(dòng)根據(jù)用戶需求從預(yù)設(shè)的組件池中選擇組件對(duì)軟件進(jìn)行組裝,可隨時(shí)滿足用戶對(duì)軟件的需求,無(wú)需研發(fā)人員對(duì)用戶的差異性需求進(jìn)行處理,減少人力,節(jié)約資源,且能減少軟件發(fā)布出錯(cuò)的可能性。此外,研發(fā)人員可直接對(duì)功能組件進(jìn)行開發(fā)形成自己的軟件產(chǎn)品,更為方便快捷。
以上所述實(shí)施例的各技術(shù)特征可以進(jìn)行任意的組合,為使描述簡(jiǎn)潔,未對(duì)上述實(shí)施例中的各個(gè)技術(shù)特征所有可能的組合都進(jìn)行描述,然而,只要這些技術(shù)特征的組合不存在矛盾,都應(yīng)當(dāng)認(rèn)為是本說(shuō)明書記載的范圍。
以上所述實(shí)施例僅表達(dá)了本發(fā)明的幾種實(shí)施方式,其描述較為具體和詳細(xì),但并不能因此而理解為對(duì)發(fā)明專利范圍的限制。應(yīng)當(dāng)指出的是,對(duì)于本領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進(jìn),這些都屬于本發(fā)明的保護(hù)范圍。因此,本發(fā)明專利的保護(hù)范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。