專利名稱:自動編譯方法及系統的制作方法
技術領域:
本發(fā)明涉及一種自動編譯方法及系統。
背景技術:
在Windows操作系統平臺下所開發(fā)的軟件,一般均具有統一與向下兼容的特性; 但是在Linux操作系統平臺下,由于各廠商間的兼容性并不是很好,用廠商A編譯出來的執(zhí) 行文檔可能無法直接在廠商B的操作系統上直接執(zhí)行,通常需要將該執(zhí)行文檔的源程序文 檔復制到廠商B的系統中,再重新編譯。為了節(jié)省重復輸入編譯命令時間,通常開發(fā)者會將 編譯命令儲存成描述檔(.sh),當需要重新編譯時,直接執(zhí)行描述檔即可;但是為了配合各 類操作系統,開發(fā)者必須生成多個描述檔,這樣容易導致使用與管理上的不便,也影響了開 發(fā)時間和開發(fā)效率。發(fā)明內容
鑒于以上內容,有必要提供一種自動編譯方法及系統,通過設定的編譯參數,以正 確的命名規(guī)則將同一源程序文檔自動生成適用于各類操作系統的執(zhí)行文檔。
一種自動編譯方法,應用于多個編譯計算機中,該方法包括下載步驟當接收到 與編譯計算機通訊的源計算機的下載通知時,從源計算機中下載該需要編譯的源程序文 檔,并將該源程序文檔存儲于編譯計算機的存儲裝置中;讀取步驟從源計算機依次讀取 包括編譯參數在內的設定文檔中的每行代碼;生成步驟當讀取了設定文檔中的第一行代 碼時,得到需要生成的執(zhí)行文檔的預設前綴名稱,并以該預設前綴名稱以及存儲裝置中的 操作系統資訊生成一個替換字串;處理步驟當讀取到編譯計算機中的編譯程序的名稱 時,得到編譯程序需要編譯的源程序文檔的名稱,以及編譯程序需要生成的執(zhí)行文檔的名 稱,該需要生成的執(zhí)行文檔的名稱為上述的替換字串;通知步驟根據所得到的編譯程序 需要編譯的源程序文檔的名稱以及需要生成的執(zhí)行文檔的名稱,通知編譯程序從存儲裝置 中讀取并編譯所述需要編譯的源程序文檔,并生成以所述替換字串為名稱的執(zhí)行文檔。
一種自動編譯系統,運行于多個編譯計算機中,該系統包括下載模塊,用于當接 收到與編譯計算機通訊的源計算機的下載通知時,從源計算機中下載該需要編譯的源程序 文檔,并將該源程序文檔存儲于編譯計算機的存儲裝置中;讀取模塊,用于從源計算機依次 讀取包括編譯參數在內的設定文檔中的每行代碼;生成模塊,用于當讀取了設定文檔中的 第一行代碼時,得到需要生成的執(zhí)行文檔的預設前綴名稱,并以該預設前綴名稱以及存儲 裝置中的操作系統資訊生成一個替換字串;處理模塊,用于當讀取到編譯計算機中的編譯 程序的名稱時,得到編譯程序需要編譯的源程序文檔的名稱,以及編譯程序需要生成的執(zhí) 行文檔的名稱,該需要生成的執(zhí)行文檔的名稱為上述的替換字串;通知模塊,用于根據所得 到的編譯程序需要編譯的源程序文檔的名稱以及需要生成的執(zhí)行文檔的名稱,通知編譯計 算機的編譯程序從存儲裝置中讀取及編譯所述需要編譯的源程序文檔,并生成以所述替換 字串為名稱的執(zhí)行文檔。
相較于現有技術,本發(fā)明所述的自動編譯方法及系統,通過預先設定的編譯參數 以及操作系統不同的各類編譯計算機的系統資訊,自動對來源計算機中的源程序文檔進行 編譯,并針對同一源程序文檔產生出適用于各類操作系統可用的的執(zhí)行文檔,且為各類編 譯計算機的生成的執(zhí)行文檔生成便于識別的文件名。使開發(fā)者不必生成多個描述檔來重新 編譯,節(jié)約了開發(fā)時間,也提高了開發(fā)效率。
圖1是本發(fā)明自動編譯系統較佳實施例的架構示意圖。
圖2是本發(fā)明自動編譯系統較佳實施例的功能模塊圖。
圖3是本發(fā)明自動編譯方法較佳實施例的流程圖。
主要元件符號說明
源計算機I數據庫10第一存儲裝置11編譯計算機2無線網絡3自動編譯系統20編譯程序21第二存儲裝置22下載模塊200讀取模塊202生成模塊204處理模塊206通知模塊208
如下具體實施方式
將結合上述附圖進一步說明本發(fā)明。
具體實施方式
如圖1所示,是本發(fā)明自動編譯系統較佳實施例的架構示意圖。所述的自動編譯 系統20運行于多個編譯計算機2上。所述的多個編譯計算機2通過無線網絡3與源計算機 I通訊。所述的源計算機I是提供多個源程序文檔的來源計算機。所述的多個編譯計算機2的操作系統均不相同,在本較佳實施例中,所述的編譯計算機2的操作系統為各類Linux 操作系統。該多個編譯計算機2上均安裝有編譯程序21與第二存儲裝置22,各編譯程序 21將各類源程序文檔編譯并生成適合各編譯計算機2的操作系統能執(zhí)行的執(zhí)行文檔,該各編譯程序21可以有統一的名稱,例如gcc。所述的第二存儲裝置22用于存儲各編譯計算機 2的操作系統資訊,包括操作系統簡稱以及操作系統的位數(bit),該操作系統簡稱是對操作系統的名稱與版本號的簡稱,例如,操作系統名稱與版本號為Red Hat 4,操作系統簡稱為RH4,操作系統的位數為32-bit。
所述的源計算機I包括數據庫10和第一存儲裝置11。所述的數據庫10用于存儲多個源程序文檔,例如main, c文檔,func. c文檔等。所述的源計算機I可以發(fā)送下載通知至各編譯計算機2,該下載通知中包括需要編譯的源程序文檔的名稱以及預設路徑。
所述的第一存儲裝置11中存儲有可以編輯的設定文檔(ag. txt)。該設定文檔中用于設定編譯參數,包括編譯程序21需要生成的執(zhí)行文檔的預設前綴名稱、編譯程序21的名稱以及編譯程序21的相關參數。該相關參數包括編譯程序21需要編譯的源程序文檔的名稱、編譯程序21需要生成的執(zhí)行文檔的預設關鍵字fname%”。所述的預設前綴名稱用于對各編譯程序21對同一源程序文檔進行編譯所生成的執(zhí)行文檔進行統一命名。所述的預設關鍵字用于表示編譯程序21需要生成的執(zhí)行文檔的名稱。該設定文檔中以行為單位,用戶還可以在該設定文檔中設置其他各種命令,例如Linuxshell命令。在本較佳實施例中,所述的設定文檔中的第一行是編譯程序21生成的執(zhí)行文檔的預設前綴名稱。
例如,所述的設定文檔可以如下所示
“abc
gcc main. c~o% fname% …,,。
“abc”為編譯程序21需要生成的執(zhí)行文檔的預設前綴名稱;“gcc”為編譯程序21 的名稱、“main, c”為需要編譯的源程序文檔,“-o% fname% ”表示編譯程序21需要生成的執(zhí)行文檔的名稱為“ % fname % ”。
如圖2所示,是本發(fā)明自動編譯系統較佳實施例的功能模塊圖。所述的自動編譯系統20包括下載模塊200、讀取模塊202、生成模塊204、處理模塊206以及通知模塊208。 本發(fā)明所稱的模塊是完成一特定功能的程序段,比程序更適合于描述軟件在芯片中的執(zhí)行過程,因此在本發(fā)明以下對軟件的描述都以模塊來描述。
所述的下載模塊200用于當接收到源計算機I的下載通知時,從源計算機I中的數據庫10下載該需要編譯的源程序文檔,并將下載的源程序文檔存儲于第二存儲裝置22 中。
所述的讀取模塊202用于從源計算機I依次讀取設定文檔中的每行代碼。
所述的生成模塊204用于當讀取模塊202讀取了設定文檔中的第一行代碼時,得到編譯程序21需要生成的執(zhí)行文檔的預設前綴名稱,并以預設前綴名稱以及第二存儲裝置22中的操作系統資訊,生成一個替換字串。該生成模塊204以“預設前綴名稱_操作系統簡稱_ 操作系統的位數”作為該替換字串。例如,設定文檔中的第一行代碼為abc,若第二存儲裝置22中存儲的該編譯計算機2的操作系統名稱及版本的簡稱為RH4,操作系統的位數為32-bit,所述的生成模塊204生成的替換字串為“abc_RH4_32”。
所述的處理模塊206用于當讀取模塊202讀取到編譯程序21的名稱時,得到該編譯程序21需要編譯的源程序文檔的名稱以及得到編譯程序21需要生成的執(zhí)行文檔的名 稱。其中所述的處理模塊206將上述生成的替換字串替換該預設關鍵字“ % fname%",以 得到編譯程序21需要生成的執(zhí)行文檔的名稱。若設定文檔中還有其他命令,以及讀取模塊 202還讀取到關鍵字“ % fname%"時,所述的處理模塊206同樣將上述生成的替換字串替 換該預設關鍵字。
所述的通知模塊208用于根據讀取得到的編譯程序21需要編譯的源程序文檔的 名稱以及編譯程序21需要生成的執(zhí)行文檔的名稱,通知編譯程序21從第二存儲裝置22中 讀取及編譯所述需要編譯的源程序文檔,并生成以所述替換字串為名稱的執(zhí)行文檔。所述 各編譯計算機2上的編譯程序21生成的執(zhí)行文檔均存儲于源計算機I的預設位置處。當 有其他計算機(圖中未示出)需要執(zhí)行源計算機I上的執(zhí)行文檔時,可以根據自身的操作 系統資訊找到對應的執(zhí)行文檔下載并使用。
應說明的是,本發(fā)明可以通過不同操作系統的編譯計算機2對同一源程序文檔進 行編譯,并生成對應的執(zhí)行文檔,且上述各編譯程序21所生成的執(zhí)行文檔的名稱包括各編 譯計算機2的操作系統資訊以及預設前綴名稱,使用戶通過該各執(zhí)行文檔的名稱更加方便 地了解該各執(zhí)行文檔適合于哪類操作系統的計算機使用。
如圖3所示,是本發(fā)明自動編譯方法較佳實施例的流程圖。
步驟S10,當接收到源計算機I的下載通知時,所述的下載模塊200從源計算機I 中的數據庫10下載該需要編譯的源程序文檔,并將下載的源程序文檔存儲于第二存儲裝 置22中。
步驟S11,所述的讀取模塊202從源計算機I依次讀取設定文檔中的每行代碼。
步驟S12,當讀取模塊202讀取設定文檔中的第一行代碼時,所述的生成模塊204 得到編譯程序21需要生成的執(zhí)行文檔的預設前綴名稱,并以該預設前綴名稱以及第二存 儲裝置22中的操作系統資訊,生成一個替換字串。該生成模塊204以預設前綴名稱_操作 系統簡稱_操作系統的位數作為該替換字串。例如,設定文檔中的第一行代碼為abc,若第 二存儲裝置22中存儲的該編譯計算機2的操作系統名稱及版本的簡稱為RH4,操作系統的 位數為32-bit,所述的生成模塊204生成的替換字串為“abc_RH4_32”。
步驟S13,當讀取模塊202讀取到編譯程序21的名稱時,所述的處理模塊206得到 該編譯程序21需要編譯的源程序文檔的名稱以及所述編譯程序21需要生成的執(zhí)行文檔的 名稱。其中所述的處理模塊206將上述生成的替換字串替換該預設關鍵字“ % fname%",以 得到編譯程序21需要生成的執(zhí)行文檔的名稱。應說明的是,若設定文檔中還有其他命令, 以及讀取模塊202還讀取到關鍵字fname%”時,所述的處理模塊206同樣將上述生成 的替換字串替換該預設關鍵字。
步驟S14,所述的通知模塊208用于根據讀取得到的編譯程序21需要編譯的源程 序文檔的名稱以及編譯程序21需要生成的執(zhí)行文檔的名稱,通知編譯程序21從第二存儲 裝置22中讀取及編譯所述需要編譯的源程序文檔,并生成以所述替換字串為名稱的執(zhí)行 文檔。所述生成的執(zhí)行文檔均存儲于源計算機I的預設位置處。當有用戶計算機(圖中未 示出)需要執(zhí)行源計算機I上的執(zhí)行文檔時,可以根據自身的操作系統資訊找到對應的執(zhí) 行文檔下載并使用。
最后應說明的是,以上實施例僅用以說明本發(fā)明的技術方案而非限制,盡管參照較佳實施例對本發(fā)明進行了詳細說明, 本領域的普通技術人員應當理解,可以對本發(fā)明的技術方案進行修改或等同替換,而不脫離本發(fā)明技術方案的精神和范圍。
權利要求
1.一種自動編譯方法,應用于編譯計算機中,其特征在于,該方法包括下載步驟當接收到與編譯計算機通訊的源計算機的下載通知時,從源計算機中下載該需要編譯的源程序文檔,將該源程序文檔存儲于該編譯計算機的存儲裝置中;讀取步驟從源計算機依次讀取包括編譯參數在內的設定文檔中的每行代碼;生成步驟當讀取了設定文檔中的第一行代碼時,得到需要生成的執(zhí)行文檔的預設前綴名稱,并以該預設前綴名稱以及存儲裝置中的操作系統資訊生成一個替換字串;處理步驟當讀取到設定文檔中的編譯計算機的編譯程序的名稱時,得到編譯程序需要編譯的源程序文檔的名稱,以及編譯程序需要生成的執(zhí)行文檔的名稱,該需要生成的執(zhí)行文檔的名稱為上述的替換字串;通知步驟根據所得到的編譯程序需要編譯的源程序文檔的名稱以及需要生成的執(zhí)行文檔的名稱,通知所述的編譯程序從存儲裝置中讀取及編譯所述需要編譯的源程序文檔,并生成以所述替換字串為名稱的執(zhí)行文檔。
2.如權利要求1所述的自動編譯方法,其特征在于,所述的設定文檔中的編譯參數包括編譯程序生成的執(zhí)行文檔的預設前綴名稱、編譯程序的名稱以及編譯程序的相關參數,該相關參數包括編譯程序需要編譯的源程序文檔的名稱,以及編譯程序需要生成的執(zhí)行文檔的預設關鍵字。
3.如權利要求2所述的自動編譯方法,其特征在于,所述的處理步驟中還包括當讀取到編譯程序需要生成的執(zhí)行文檔的預設關鍵字時,均采用上述生成的替換字串替換該預設關鍵字。
4.如權利要求3所述的自動編譯方法,其特征在于,所述的操作系統資訊包括操作系統簡稱與操作系統的位數,以及所述的生成步驟中生成的替換字串的格式為“預設前綴名稱_操作系統簡稱_操作系統的位數”。
5.如權利要求1所述的自動編譯方法,其特征在于,所述的編譯程序用于將源程序文檔編譯并生成該編譯計算機的操作系統能執(zhí)行的執(zhí)行文檔,以及將生成的執(zhí)行文檔存儲于源計算機的預設位置處,提供給有需要的用戶計算機下載并使用。
6.一種自動編譯系統,運行于編譯計算機中,其特征在于,該系統包括下載模塊,用于當接收到與編譯計算機通訊的源計算機的下載通知時,從源計算機中下載該需要編譯的源程序文檔,并將該源程序文檔存儲于該編譯計算機的存儲裝置中;讀取模塊,用于從源計算機依次讀取包括編譯參數在內的設定文檔中的每行代碼;生成模塊,用于當讀取了設定文檔中的第一行代碼時,得到需要生成的執(zhí)行文檔的預設前綴名稱,并以該預設前綴名稱以及存儲裝置中的操作系統資訊生成一個替換字串;處理模塊,用于當讀取到編譯計算機中的編譯程序的名稱時,得到編譯程序需要編譯的源程序文檔的名稱以及編譯程序需要生成的執(zhí)行文檔的名稱,該需要生成的執(zhí)行文檔的名稱為上述的替換字串;通知模塊,用于根據所得到的編譯程序需要編譯的源程序文檔的名稱以及需要生成的執(zhí)行文檔的名稱,通知所述的編譯程序從存儲裝置中讀取及編譯所述需要編譯的源程序文檔,并生成以所述替換字串為名稱的執(zhí)行文檔。
7.如權利要求6所述的自動編譯系統,其特征在于,所述的設定文檔中的編譯參數包括編譯程序生成的執(zhí)行文檔的預設前綴名稱、編譯程序的名稱以及編譯程序的相關參數,該相關參數包括編譯程序需要編譯的源程序文檔的名稱,以及編譯程序需要生成的執(zhí)行文檔的預設關鍵字。
8.如權利要求7所述的自動編譯系統,其特征在于,所述的處理模塊還用于當讀取到編譯程序需要生成的執(zhí)行文檔的預設關鍵字時,均采用上述生成的替換字串替換該預設關鍵字。
9.如權利要求8所述的自動編譯系統,其特征在于,所述的操作系統資訊包括操作系統簡稱與操作系統的位數,以及所述的生成模塊所生成的替換字串的格式為“預設前綴名稱_操作系統簡稱操_作系統的位數”。
10.如權利要求6所述的自動編譯系統,其特征在于,所述的編譯程序用于將源程序文檔編譯并生成該編譯計算機的操作系統能執(zhí)行的執(zhí)行文檔,以及將生成的執(zhí)行文檔存儲于源計算機的預設位置處,提供給有需要的用戶計算機下載并使用。
全文摘要
一種自動編譯方法及系統,該方法包括從源計算機中下載并存儲需要編譯的源程序文檔;從源計算機依次讀取包括編譯參數的設定文檔中的每行代碼;當讀取到第一行代碼時,得到需要生成的執(zhí)行文檔的預設前綴名稱,以該預設前綴名稱以及預存的操作系統資訊生成一個替換字串;當讀取到編譯程序的名稱時,讀取得到需要編譯的源程序文檔的名稱以及需要生成的執(zhí)行文檔的名稱,該需要生成的執(zhí)行文檔的名稱為上述的替換字串;通知編譯程序對需要編譯的源程序文檔進行編譯并生成以所述替換字串為名稱的執(zhí)行文檔。利用本發(fā)明可以自動進行編譯并生成便于識別的執(zhí)行文檔。
文檔編號G06F9/45GK103034522SQ20111029639
公開日2013年4月10日 申請日期2011年10月7日 優(yōu)先權日2011年10月7日
發(fā)明者蔡英川 申請人:鴻富錦精密工業(yè)(深圳)有限公司, 鴻海精密工業(yè)股份有限公司