欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種快速移植編譯開(kāi)源程序的方法與流程

文檔序號(hào):12469569閱讀:1913來(lái)源:國(guó)知局
一種快速移植編譯開(kāi)源程序的方法與流程

本發(fā)明涉及計(jì)算機(jī)軟件技術(shù)領(lǐng)域,更具體地,涉及一種快速移植編譯開(kāi)源程序的方法。



背景技術(shù):

目前,Linux的發(fā)行版就是將Linux核心與應(yīng)用軟件做一個(gè)打包,較知名的有:RedHat、Debain、SuSE、Ubuntu等,用戶可以通過(guò)各發(fā)行版linux內(nèi)核的安裝包管理工具(apt-get、yum)安裝自己需要軟件程序,簡(jiǎn)單方便的從指定的服務(wù)器自動(dòng)下載RPM包并且安裝,可以自動(dòng)處理依賴(lài)性關(guān)系,并且一次安裝所有依賴(lài)的軟件包。

Linux的非發(fā)行版本一般是只有Linux核心及少量常用的可執(zhí)行程序,需要使用的額外軟件程序則無(wú)法直接安裝,需要自己手動(dòng)進(jìn)行編譯開(kāi)源程序獲取?,F(xiàn)在的網(wǎng)絡(luò)設(shè)備由于自主開(kāi)發(fā)用戶態(tài)程序,一般選擇使用簡(jiǎn)潔小巧的非發(fā)行版本內(nèi)核,通過(guò)使用標(biāo)準(zhǔn)gcc或自定義交叉編譯工具編譯標(biāo)準(zhǔn)Linux內(nèi)核源碼的方式。

如此,帶來(lái)的問(wèn)題是在開(kāi)發(fā)過(guò)程中需要一些開(kāi)源程序或庫(kù)文件時(shí)就需要使用標(biāo)準(zhǔn)gcc或自定義交叉編譯工具編譯所需的開(kāi)源程序或庫(kù)文件源碼,有些開(kāi)源代碼版本較多或比較難下載到,而一些功能復(fù)雜的開(kāi)源程序或庫(kù)文件源碼在編譯時(shí)又可能依賴(lài)于很多其他開(kāi)源程序或庫(kù)文件,如此可能會(huì)因?yàn)橐幾g一個(gè)開(kāi)源程序或庫(kù)文件而需要編譯其他好幾個(gè)開(kāi)源程序或庫(kù)文件,且編譯過(guò)程中的各種報(bào)錯(cuò)解決尤為讓人頭痛,費(fèi)時(shí)費(fèi)力。

由于不同的開(kāi)源程序的復(fù)雜程度不同,移植起來(lái)的困難程度也不同,并且大部分開(kāi)源程序在設(shè)計(jì)時(shí)沒(méi)有考慮移植問(wèn)題。

在現(xiàn)有技術(shù)中,拿到要移植開(kāi)源程序的源碼包之后,首先要連接開(kāi)源程序的功能和實(shí)現(xiàn)方法,并分析開(kāi)源程序的依賴(lài)關(guān)系:(1)硬件相關(guān);(2)它依賴(lài)什么特定的函數(shù)庫(kù),比如glibc;(3)是否依賴(lài)特定的高層圖形類(lèi)庫(kù),比如gtk;(4)依賴(lài)特定的軟件,比如GUI程序依賴(lài)的X server。

另外,開(kāi)源程序依賴(lài)很多其他函數(shù)庫(kù),比如gtk軟件必須要有g(shù)tk庫(kù)的支持,為了程序的編譯和運(yùn)行,必須首先將這些函數(shù)庫(kù)移植過(guò)來(lái)。更困難的是需要修改源代碼,假如源碼里有很多硬件相關(guān)的代碼,比如匯編指令,不同體系結(jié)構(gòu)的指令集不同??赡懿粌H僅是一條條指令對(duì)應(yīng)那么簡(jiǎn)單,因?yàn)槟繕?biāo)平臺(tái)可能沒(méi)有對(duì)應(yīng)功能的指令并且在不同平臺(tái)上軟件運(yùn)行到匯編代碼處時(shí)各個(gè)寄存器的意義不相同。另一個(gè)方法是如果可以用C代碼將匯編段的功能模擬出來(lái),那就用c代碼代替匯編代碼。從而使得整個(gè)移植編譯的過(guò)程異常復(fù)雜,費(fèi)時(shí)費(fèi)力,并且極度依賴(lài)于操作人本身的技術(shù)能力,普及化不夠。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明提供一種克服上述問(wèn)題或者至少部分地解決上述問(wèn)題的快速移植編譯開(kāi)源程序的方法。

根據(jù)本發(fā)明的一個(gè)方面,提供一種快速移植編譯開(kāi)源程序的方法,所述方法包括:在發(fā)行版本Linux系統(tǒng)中編譯或者安裝開(kāi)源程序;移植到非發(fā)行版本Linux內(nèi)核系統(tǒng)上運(yùn)行。

其中,所述方法進(jìn)一步包括:

步驟1,在虛擬機(jī)上安裝發(fā)行版本Linux系統(tǒng)的編譯機(jī),作為編譯和移植開(kāi)源程序的編譯機(jī);

步驟2,搜索開(kāi)源程序的安裝包進(jìn)行安裝,將安裝好的可執(zhí)行程序?qū)С錾蟼鞯綀?zhí)行網(wǎng)絡(luò)設(shè)備中;

步驟3,運(yùn)行所述可執(zhí)行程序,將運(yùn)行所需的庫(kù)文件或者其他依賴(lài)文件上傳到所述執(zhí)行網(wǎng)絡(luò)設(shè)備的對(duì)應(yīng)目錄;

步驟4,將導(dǎo)出的所有可執(zhí)行程序及庫(kù)文件放到Linux文件系統(tǒng)的對(duì)應(yīng)目錄下,打包編譯進(jìn)Linux內(nèi)核鏡像文件中,重新上傳到執(zhí)行網(wǎng)絡(luò)設(shè)備。

其中,所述方法進(jìn)一步包括:

步驟5,在所述編譯機(jī)中安裝網(wǎng)絡(luò)設(shè)備內(nèi)核編譯工具,編譯開(kāi)源碼并且配置所需開(kāi)源庫(kù)或依賴(lài)程序,編譯后將可執(zhí)行程序上傳到執(zhí)行網(wǎng)絡(luò)設(shè)備驗(yàn)證,編譯到內(nèi)核文件系統(tǒng)。

其中,所述步驟1進(jìn)一步包括:

步驟11,搭建發(fā)行版本Linux系統(tǒng)的編譯機(jī);

步驟12,根據(jù)當(dāng)前所使用的非發(fā)行版本Linux內(nèi)核的架構(gòu)類(lèi)型、32\64位及內(nèi)核版本信息,選擇相同或類(lèi)似的發(fā)行版本Linux內(nèi)核系統(tǒng)在虛擬機(jī)上進(jìn)行安裝,作為編譯和移植開(kāi)源程序的編譯機(jī)。

其中,所述步驟2進(jìn)一步包括:

步驟21,根據(jù)所需開(kāi)源程序的名稱(chēng)在編譯機(jī)中使用安裝管理工具進(jìn)行安裝包搜索;

步驟22,根據(jù)搜索到的安裝包信息選擇所需版本進(jìn)行安裝操作;

步驟23,安裝完成后在根目錄下查找到安裝程序所在位置,將該可執(zhí)行程序?qū)С霾⑸蟼鞯叫枰\(yùn)行該程序的網(wǎng)絡(luò)設(shè)備中。

其中,所述步驟3進(jìn)一步包括:

步驟31,運(yùn)行上傳到執(zhí)行網(wǎng)絡(luò)設(shè)備上的所述可執(zhí)行程序;

步驟32,根據(jù)提示信息將運(yùn)行時(shí)缺少的庫(kù)文件或其他依賴(lài)程序搜索導(dǎo)出,并上傳到網(wǎng)絡(luò)設(shè)備的對(duì)應(yīng)目錄,直到可執(zhí)行程序運(yùn)行成功。

其中,所述步驟32進(jìn)一步包括:

根據(jù)所需庫(kù)文件或者其他依賴(lài)程序的名稱(chēng)在編譯機(jī)中使用安裝管理工具進(jìn)行搜索;

步驟22,根據(jù)搜索到的信息選擇其他依賴(lài)程序的所需版本進(jìn)行安裝操作;

步驟23,安裝完成后在根目錄下查找到庫(kù)文件或者其他依賴(lài)程序所在位置,將該庫(kù)文件和其他依賴(lài)程序的可執(zhí)行程序?qū)С霾⑸蟼鞯叫枰\(yùn)行該程序的網(wǎng)絡(luò)設(shè)備中。

其中,所述步驟5進(jìn)一步包括:

步驟51,在所述編譯機(jī)中安裝編譯網(wǎng)絡(luò)設(shè)備內(nèi)核所使用的標(biāo)準(zhǔn)gcc或自定義交叉編譯工具,以使編譯工具一致;

步驟52,在所述編譯機(jī)中將下載的開(kāi)源碼上傳并解壓,源碼編譯過(guò)程中安裝使用所提示缺少的開(kāi)源庫(kù)或依賴(lài)程序;

步驟53,編譯完成后將生成的可執(zhí)行程序?qū)С霾⑸蟼鞯骄W(wǎng)絡(luò)設(shè)備上驗(yàn)證,運(yùn)行正常情況下將生成的可執(zhí)行程序打包編譯進(jìn)內(nèi)核文件系統(tǒng)。

本申請(qǐng)公開(kāi)了一種快速移植編譯開(kāi)源程序的方法,通過(guò)在發(fā)行版本Linux系統(tǒng)中編譯或安裝開(kāi)源程序,然后移植到非發(fā)行版本內(nèi)核系統(tǒng)上,解決非發(fā)行版本內(nèi)核無(wú)法直接安裝開(kāi)源程序的問(wèn)題,避免了編譯開(kāi)源程序又依賴(lài)于很多其他程序或庫(kù)文件情況下的麻煩,節(jié)省大量的時(shí)間和人力。

附圖說(shuō)明

圖1為根據(jù)本發(fā)明實(shí)施例的一種快速移植編譯開(kāi)源程序的方法的總流程圖;

圖2為根據(jù)本發(fā)明實(shí)施例的一種快速移植編譯開(kāi)源程序的方法的流程圖。

具體實(shí)施方式

下面結(jié)合附圖和實(shí)施例,對(duì)本發(fā)明的具體實(shí)施方式作進(jìn)一步詳細(xì)描述。以下實(shí)施例用于說(shuō)明本發(fā)明,但不用來(lái)限制本發(fā)明的范圍。

本發(fā)明公開(kāi)了一種快速移植編譯開(kāi)源程序的方法,如圖1所示,圖1為根據(jù)本發(fā)明實(shí)施例的一種快速移植編譯開(kāi)源程序的方法的總流程圖,通過(guò)在發(fā)行版本Linux系統(tǒng)中編譯或安裝開(kāi)源程序,然后移植到非發(fā)行版本內(nèi)核系統(tǒng)上,解決非發(fā)行版本內(nèi)核無(wú)法直接安裝開(kāi)源程序的問(wèn)題,避免了編譯開(kāi)源程序又依賴(lài)于很多其他程序或庫(kù)文件情況下的麻煩,節(jié)省大量的時(shí)間和人力。

總的來(lái)說(shuō),如圖2所示,圖2為根據(jù)本發(fā)明實(shí)施例的一種快速移植編譯開(kāi)源程序的方法的流程圖。本申請(qǐng)?zhí)峁┑姆椒òǎ翰襟E1,在虛擬機(jī)上安裝發(fā)行版本Linux系統(tǒng)的編譯機(jī),作為編譯和移植開(kāi)源程序的編譯機(jī);步驟2,搜索開(kāi)源程序的安裝包進(jìn)行安裝,將安裝好的可執(zhí)行程序?qū)С錾蟼鞯綀?zhí)行網(wǎng)絡(luò)設(shè)備中;步驟3,運(yùn)行所述可執(zhí)行程序,將運(yùn)行所需的庫(kù)文件或者其他依賴(lài)文件上傳到所述執(zhí)行網(wǎng)絡(luò)設(shè)備的對(duì)應(yīng)目錄;步驟4,將導(dǎo)出的所有可執(zhí)行程序及庫(kù)文件放到Linux文件系統(tǒng)的對(duì)應(yīng)目錄下,打包編譯進(jìn)Linux內(nèi)核鏡像文件中,重新上傳到執(zhí)行網(wǎng)絡(luò)設(shè)備。

具體地,該方法包括如下步驟。

S1,搭建發(fā)行版本Linux系統(tǒng)的編譯機(jī);根據(jù)當(dāng)前所使用的非發(fā)行版本Linux內(nèi)核的架構(gòu)類(lèi)型、32\64位及內(nèi)核版本信息選擇相同或類(lèi)似的發(fā)行版本Linux內(nèi)核系統(tǒng)在虛擬機(jī)上進(jìn)行安裝,作為編譯和移植開(kāi)源程序的編譯機(jī);

S2,根據(jù)所需開(kāi)源程序的名稱(chēng)在上述編譯機(jī)中使用安裝管理工具進(jìn)行安裝包搜索(如yum search flashrom),然后根據(jù)搜索到的安裝包信息選擇自己所需的版本進(jìn)行安裝操作(如yum install flashrom),安裝完成后在根目錄下通過(guò)find命令查找到安裝程序所在位置(find/-name flashrom),然后將該可執(zhí)行程序?qū)С霾⑸蟼鞯叫枰\(yùn)行該程序的網(wǎng)絡(luò)設(shè)備中;

S3,運(yùn)行上傳到網(wǎng)絡(luò)設(shè)備上的可執(zhí)行程序,根據(jù)提示信息將運(yùn)行時(shí)缺少的庫(kù)文件或其他依賴(lài)程序按照S2步驟搜索找到導(dǎo)出,并上傳到網(wǎng)絡(luò)設(shè)備的對(duì)應(yīng)目錄(一般可執(zhí)行程序放/bin目錄,庫(kù)文件放/lib目錄),直到可執(zhí)行程序運(yùn)行成功;

S4,將導(dǎo)出的所有可執(zhí)行程序及庫(kù)文件放到Linux文件系統(tǒng)的對(duì)應(yīng)目錄下,打包編譯進(jìn)Linux內(nèi)核鏡像文件中,重新上傳到網(wǎng)絡(luò)設(shè)備,保證移植的可執(zhí)行程序及庫(kù)文件重啟不丟失。

S5,另外,對(duì)于有些開(kāi)源程序按照上述步驟依然無(wú)法運(yùn)行成功的,則必須選擇編譯開(kāi)源碼的方式。此時(shí)需要在所述編譯機(jī)中安裝編譯網(wǎng)絡(luò)設(shè)備內(nèi)核所使用的標(biāo)準(zhǔn)gcc或自定義交叉編譯工具,保證編譯工具一致;然后在所述編譯機(jī)中將下載的開(kāi)源碼上傳并解壓,進(jìn)行源碼編譯過(guò)程中提示缺少的開(kāi)源庫(kù)或依賴(lài)程序,可直接通過(guò)安裝管理工具直接搜索安裝使用,減少編譯的工作量。編譯完成后將生成的可執(zhí)行程序?qū)С霾⑸蟼鞯骄W(wǎng)絡(luò)設(shè)備上驗(yàn)證,運(yùn)行正常情況下將生成的可執(zhí)行程序打包編譯進(jìn)內(nèi)核文件系統(tǒng)。

最后,本申請(qǐng)的方法僅為較佳的實(shí)施方案,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
建宁县| 墨竹工卡县| 大洼县| 镇巴县| 广丰县| 乌苏市| 柳河县| 东阳市| 双柏县| 宁陕县| 防城港市| 莲花县| 庆阳市| 五大连池市| 砚山县| 福建省| 平乡县| 韩城市| 邓州市| 武义县| 贵州省| 行唐县| 孟津县| 南投县| 宝坻区| 弋阳县| 老河口市| 宽甸| 恭城| 黄山市| 怀化市| 莱阳市| 高碑店市| 元氏县| 新泰市| 汉沽区| 依兰县| 永丰县| 哈巴河县| 额尔古纳市| 灵山县|