導航:首頁 > 源碼編譯 > 編譯器和固件

編譯器和固件

發布時間:2022-06-02 19:06:19

A. 電腦軟體是不是看不見摸不著的東西

軟體,是人們為了告訴電腦要做什麼事而編寫的,電腦能夠理解的一串指令,有時也叫代碼、程序。 根據功能的不同,電腦軟體可以粗略地分成四個層次。最貼近電腦硬體的是一些小巧的軟體。它們實現一些最基本的功能,通常「固化」在只讀存儲器晶元中,因此稱為固件。系統軟體包括操作系統和編譯器軟體等。系統軟體和硬體一起提供一個「平台」。它們管理和優化電腦硬體資源的使用。常見的中間件包括資料庫和萬維網伺服器等,它們在應用軟體和平台之間建立一種橋梁。應用軟體種類最多,包括辦公軟體、電子商務軟體、通信軟體、行業軟體,游戲軟體等等。

B. 什麼是計算機軟體;什麼是計算機硬體

可以這樣來看,硬體就是看的見摸得到的東西,而軟體則是看得見卻摸不到的東西。 計算機軟體是計算機的靈魂,是計算機應用的關鍵。如果沒有適應不同的需要的計算機軟體。人們就不可能將計算機廣泛地應用於人類社會的生產。生活,科研。教育等幾乎所有領域,計算機也只能是一具沒有靈魂的軀殼。目前。以信息技術。信息產業為代表的高科技術日益引起人們的關注,成為新的經濟增長點。計算機軟體技術作為信息技術的基礎之一。已成為信息產業的主要組成部分。 對於計算機軟體的概念。面在尚無一個統一的定義。世界上多數國家和國際組織原則上採用了世界知識產權組織(WIPO)的意見。結合實際加以修改。1978年世界知識產權組織發表了《保護計算機軟體示範法條》這是該組織召集一些國家的專家組成專門小組研究制定的,其目的是為了對各國計算機軟體立法提供參考意見,以便促進計算機軟體的國際保護。在這一示範法條中。對計算機軟體作了如下定義:計算機軟體包括程序,程序說明和程序使用指導三項內容。「程序」是指在一計算機可讀介質合為一體後,能夠使計算機具有信息處理能力,以標志一定功能。完成一定任務或產生一定結果的指令集合。「程序說明」是指用文字。圖解或其他方式。對計算機程序中的指令所作的足夠詳細的,足夠完整的說明,解釋。「程序使用指導」是指除了程序,程序說明以外的。用以幫助理解和實施有關程序的其他輔助材料。 在上述定義中,對「程序」的定義不夠准確,按照這一定義,源程序(以高級計算機評議編寫的程序)可能會被排除在「計算機軟體」之外。因此各國在參考這一定義時,大多數都將「在與計算機可讀介質合為一體後」這一條件刪除,這樣就可以明確無誤地將源程序列入出境「計算機程序」之中了。

C. 單片機上的源代碼和固件有什麼區別

源代碼就是人能看懂的程序代碼,通常說寫程序也就是寫的源代碼;固件是源碼經過編譯過後生成的目標程序,是二進制代碼,一般為bin或hex格式,燒錄進單片機能夠被識別和執行。

D. 怎麼將路由器官方下載的固件變成編輯器固件

以Newifi新路由為例,固件升級方法如下,供你參考
方法/步驟
1.首先打開IE瀏覽器,輸入Newifi新路由的路由器地址,初始地址為:192.168.99.1,出現Newifi新路由登錄界面。
2.輸入Newifi新路由的密碼之後可以進入路由管理界面,密碼為你設置的WIFI密碼。然後點擊路由設置。
3.點擊路由系統升級。可以看你的Newifi新路由當前路由系統版本,與最新版本號。
4.點擊升級後,會提示警告信息,點擊確定升級。
5.進入路由器新版本固件ROM下載。
6.Newifi新路由固件下載完成後,會自動進入升級。
7.升級完成後Newifi新路由會自己重啟,進入升級界面,可以看新版本號。若需要嘗試測試版本,或其它兼容的路由器固件ROM,可以選擇本地進行刷路由系統。

E. 什麼是 軟體

無線訪問接入點
基本介紹
AP是(Wireless) Access Point的縮寫,即(無線)訪問接入點。如果無線網卡可比作有線網路中的乙太網卡,那麼AP就是傳統有線網路中的HUB,也是目前組建小型無線區域網時最常用的設備。AP相當於一個連接有線網和無線網的橋梁,其主要作用是將各個無線網路客戶端連接到一起,然後將無線網路接入乙太網(這正是Access Point名稱的本義)。 目前大多數的無線AP都支持多用戶接入、數據加密、多速率發送等功能,一些產品更提供了完善的無線網路管理功能。對於家庭、辦公室這樣的小范圍無線區域網而言,一般只需一台無線AP即可實現所有計算機的無線接入。 AP的室內覆蓋范圍一般是30m~100m,目前不少廠商的AP產品可以互聯,以增加WLAN覆蓋面積。也正因為每個AP的覆蓋范圍都有一定的限制,正如手機可以在基站之間漫遊一樣,無線區域網客戶端也可以在AP之間漫遊。
無線AP與無線路由的區別
隨著無線網路的快速發展,組建小型無線區域網已成為SOHO和家庭用戶首選的組網方案。然而就像很多人很容易混淆無線上網卡和無線網卡一樣,很多用戶也分不清無線AP和無線路由。許多用戶在選購產品前查詢資料的時候發現無線AP和無線路由都可以實現無線上網,可等買回相對便宜的無線AP開始組建無線網路時卻發現無線AP無法和ADSL一起使用,完全不能實現無線上網。無線路由就可以嗎?今天這里就給大家講講無線AP與無線路由的區別,希望對大家有所幫助。 無線AP,即Access Point,也就是無線接入點。簡單來說就是無線網路中的無線交換機,它是移動終端用戶進入有線網路的接入點,主要用於家庭寬頻、企業內部網路部署等,無線覆蓋距離為幾十米至上百米,目前主要技術為802.11X系列。一般的無線AP還帶有接入點客戶端模式,也就是說AP之間可以進行無線鏈接,從而可以擴大無線網路的覆蓋范圍。 目前的無線AP可分為兩類:單純型AP和擴展型AP。 單純型AP由於缺少了路由功能,相當於無線交換機,僅僅是提供一個無線信號發射的功能。它的工作原理是將網路信號通過雙絞線傳送過來,經過無線AP的編譯,將電信號轉換成為無線電訊號發送出來,形成無線網路的覆蓋。根據不同的功率,網路覆蓋程度也是不同的,一般無線AP的最大覆蓋距離可達400米。 擴展型AP就是我們常說的無線路由器了。無線路由器,顧名思義就是帶有無線覆蓋功能的路由器,它主要應用於用戶上網和無線覆蓋。通過路由功能,可以實現家庭無線網路中的Internet連接共享,也能實現ADSL和小區寬頻的無線共享接入 。值得一提的是,可以通過無線路由器把無線和有線連接的終端都分配到一個子網,使得子網內的各種設備可以方便的交換數據。 對於擴展型AP來說,它們在短距離內是可以互聯的;如果需要傳輸的距離比較遠,那就需要無線網橋和專門的天線等設備來幫忙了。

F. 編譯器和解釋器的主要區別是什麼他們相對於對方各自的優點

解釋器是解釋執行的源代碼,編譯器是將源代碼編譯成目標代碼

他們最大的區別是程序運行時需要解釋器邊解釋邊執行,而編譯器則在運行時是完全不需要的

解釋器的優點是比較容易讓用戶實現自己跨平台的代碼,比如javaphp等,同一套代碼可以在幾乎所有的操作系統上執行,而無需根據操作系統做修改;
編譯器的目的就是生成目標代碼再由連接器生成可執行的機器碼,這樣的話需要根據不同的操作系統編制代碼,雖然有像Qt這樣的源代碼級跨平台的編程工具庫,但在不同的平台上仍然需要重新編譯連接成可執行文件,但其執行效率要遠遠高於解釋運行的程序。
編譯器是把源程序的每一條語句都編譯成機器語言,並保存成二進制文件,這樣運行時計算機可以直接以機器語言來運行此程序,速度很快;
而解釋器則是只在執行程序時,才一條一條的解釋成機器語言給計算機來執行,所以運行速度是不如編譯後的程序運行的快的.
這是因為計算機不能直接認識並執行我們寫的語句,它只能認識機器語言(是二進制的形式)

G. 如何將一個現成的ipk加入到openwrt編譯出的固件中

(!文末附加戲寫編譯OPENWRTTXT內容直接跳至末尾例)
Openwrt 官式發行版已編譯映像文件(綴名bin或trx、trx2)映像文件Openwrt官網站載頁面輕松獲取連接址 OpenWrt官網站些編譯映像文件基於默認配置設置且針受支持平台或設備要打造自映像文件理由四點:
您想擁性化配置OpenWrt(彰顯性朋友圈顯擺顯擺玩笑);
您想實驗性平台測試OpenWrt;
您參與測試或參與發OpenWrt工作;
或者簡單目保持自Openwrt新版本;
若想實現述目其實簡單按述文字即功編譯您Openwrt
准備工作
始編譯Openwrt前需要您做些准備工作;與其編譯程類似編譯工具編譯環境必少:
構建OpenWrt映像系統平台簡單說准備操作系統(比Ubuntu、Debian等);
確保安裝所需依賴關系庫 (debian系統安裝各種需要軟體包)
OpenWrt源代碼副本
首先 機登陸支持編譯Openwrt操作系統(廢)實體機或者虛擬機(Vmware 或者 Qemu)操作系統都行推薦使用Linux系統 bsdmac osx系統編推薦且未驗證否編譯功文假定您使用Debian操作系統使用 apt-get 管理包. 替代選擇 Ubuntu (支 Kubuntu, Xubuntu 等即)
第二步, 安裝所需要各種軟體包, 包括編譯器,解壓工具,特定庫等. 些工作簡單通鍵入命令 (通需要root 或者 sudo 許可權)root許可權安裝列軟體包(能並完整提示提示缺少即裝):
32位(x86)請執行列命令:
# apt-get install build-essential asciidoc binutils bzip2 gawk gettext \
git libncurses5-dev libz-dev patch unzip zlib1g-dev

64位(x86_64)請執行列命令(裝哪些庫或軟體包呢請您仔細看看哦):
# apt-get install build-essential asciidoc binutils bzip2 gawk gettext \
git libncurses5-dev libz-dev patch unzip zlib1g-dev ia32-libs \
lib32gcc1 libc6-dev-i386

參考 本列表 所列編譯環境所需要軟體包或庫
某些依賴庫或軟體包許操作系統已經安裝apt-get作提示(提示您忽略或重新安裝)別緊張放輕鬆些編譯Openwrt像編譯DD-WRT難(至少本體編譯DD-WRT難)
載份完整 Openwrt 源碼編譯環境關於Openwrt源代碼載途徑二通 svn 通 git建議使用 svn Openwrt主要 svn 維護Openwrt系統版本另外請注意Openwrt同支版本用較發快照俗稱 trunk二穩定版俗稱 backfire
安裝Subversion
若想通svn載源代碼,需安裝 SubversionSubversion,或稱SVN, OpenWrtproject用控製版本系統,非類似 CVS界面使用條款 執行述命令即安裝SVN容易:
# apt-get install subversion

Subversion安裝完畢通SVN命令獲取份OpenWrt純凈源代碼您創建目錄便存放獲取Openwrt源代碼要獲取源代碼輸入subversion命令獲取 (svn種操作稱'check out') 命令簡單繼續看能見別著急耐點
編譯流程
編譯專屬於您設備特定Openwrt固件五步驟:
通Subversion命令獲源代碼;
更新(或安裝) package feeds[package feeds確切翻譯待譯吧);
創建默認配置檢查編譯環境否搭建 (假需要);
用Menuconfig配置即編譯固件映像文件配置項;
始編譯固件;
載源代碼
載份完整OpenWrt源代碼選擇:
載穩定發行版或
載發版 (俗稱"trunk"版)
使用發行版源碼
截止本文, Openwrt公發行穩定版 OpenWrt 10.03 "backfire"版本穩定許包括新更新補丁或新編寫新功能
述代碼即舉例說明通svnbrandkfire獲backfire源代碼(版本意思trunk支補丁backfire版本即包含修復補丁):
# mkdir OpenWrt/
# cd OpenWrt/
# svn co svn://svn.openwrt.org/openwrt/branches/backfire

註解: 述svn命令前目錄創建 OpenWrt/backfire/ 目錄目錄包含命令獲取源代碼
您通述命令載含修復補丁backfire原版源碼:
# svn co svn://svn.openwrt.org/openwrt/tags/backfire_10.03

使用發版源代碼
前發版本支(trunk)已包含新實驗補丁支或許突破Openwrt原所支持硬體設備限制哦驚喜同風險存編譯trunk版慎~
# mkdir OpenWrt/
# cd OpenWrt/
# svn co svn://svn.openwrt.org/openwrt/trunk/

更詳細資料詳見:
跟進並更新源代碼
Openwrt源代碼隨都變故命令確保您所獲取源碼新性述假設您用backfire版本源碼:
## Here, backfire is the directory name of the current release branch you're tracking
# cd OpenWrt/backfire/
# svn up

'svn up' 命令用於更新SVN更新本尚未更新部源代碼(本實踐證明命令本源碼與SVN源碼先比較若SVN更新才載更新部實用命令)未指定目標路徑則命令更新前目錄及前目錄目錄內源碼
Feeds載
Feeds即包含OpenWrt環境額外軟體包索引類(feed譯名莫衷至2008底止沒十通用備受認文譯名;所文我用英文feed稱呼) 主要Feeds三:
'packages' - 路由基本功能,
'LuCI' - OpenWrt默認GUI(WEB管理界面), 及
'Xwrt' - 其GUI
般情況至少需要含 'packages' 'LuCI'兩Feeds
載完feeds (編譯OpenWrtrecipies額外預定義包) 您檢查哪些feeds要包括內編輯編譯環境根目錄'feeds.conf.default'文件
使用列命令始載(註:能需要先運行cd trunk進入trunk目錄才能功執行列命令):
# ./scripts/feeds update -a

載軟體包需要安裝亦即指邊命令啦若路邊install命令則續make menuconfig功執行(註:能需要先運行cd trunk進入trunk目錄才能功執行列命令):
# ./scripts/feeds install -a

需編輯Feeds配置文件或運行更新命令即便更新或添加新實驗性packages源碼並編譯OpenWrt固件
注意:請壇友及舊新聞組員注意步取代創建符號鏈接symlinks辦哦
更新Feeds
諸類源碼,定期更新Feeds 通相同命令:
# ./scripts/feeds update -a
# ./scripts/feeds install -a

注意:若清楚知道需添加新packagesmenuconfig更新Feeds跳步
配置
You may not have to make configration always after updating sources and feeds, but making it ensures that all packages from source and feeds are correctly included in your build configuration.
Defconfig
步檢查編譯環境若進行編譯則默認配置:
# make defconfig

若defconfig顯提示缺少軟體包或編譯庫等依賴則按提示安裝所缺軟體包或庫等即難細點行
Menuconfig
menuconfig基於文本工具處理選擇目標(需要需要)、編譯軟體包(openwrtIPKG格式)及內核選項(編譯模塊內核)等等
# make menuconfig

離並保存配置文件(默認都.config)自配置依賴關系讓著手編譯更新固件
眾通'menuconfig'簡單圖形化配置環境非輕松編譯專屬您本OpenWrt固件
用'menuconfig'發意圖編譯OpenWrt固件自()創造結構簡單功能強環境(句實難翻譯能意譯並且請家都習編譯OP固件讓OP固件盈利丟掉骯臟飯碗)
Menuconfig或或少些難說明即使專業配置尋求幫助並加解決 需要指定何種目標平台要包含package軟體包內核模塊等均需要指定配置標准程包括修改:
目標平台(即路由器何種架構BCM呢AR均選擇)
選擇要包含package軟體包
構建系統設置
內核模塊
Target system is selected from the extensive list of supported platforms, with the numerous target profiles – ranging from specific devices to generic profiles, all depending on the particular device at hand. Package selection has the option of either 'selecting all package', which might be un-practical in certain situation, or relying on the default set of packages will be adequate or make an indivial selection. It is here needed to mention that some package combinations might break the build process, so it can take some experimentation before the expected result is reached. Added to this, the OpenWrt developers are themselves only maintaining a smaller set of packages – which includes all default packages – but, the feeds-script makes it very simple to handle a locally maintained set of packages and integrate them in the build-process.
假需要LuCI, 要Administration 菜單,LuCI組件菜單, 並選擇: luci-admin-core, luci-admin-full, and luci-admin-mini組件包
假需要PPP,Network菜單取消選擇便編譯包含組件
Menuconfig用: 確保些組件包 '*'星號標記 'M'標記
星號 '*'標記該組件包, 則該組件包編譯進終OpenWrt固件
僅 'M'標記該組件包, 則該組件包編譯進終OpenWrt固件
The final step before the process of compiling the intended image(s) is to exit 'menuconfig' – this also includes the option to save a specific configuration or load an already existing, and pre-configured, version.
Exit and save.
Source Mirrors
The 'Build system settings' include some efficient options for changing package locations which makes it easy to handle a local package set:
Local mirror for source packages
Download folder
In the case of the first option, you simply enter a full URL to the web or ftp server on which the package sources are hosted. Download folder would in the same way be the path to a local folder on the build system (or network). If you have a web/ftp-server hosting the tarballs, the OpenWrt build system will try this one before trying to download from the location(s) mentioned in the Makefiles . Similar if a local 'download folder', residing on the build system, has been specified. The 'Kernel moles' option is required if you need specific (non-standard) drivers and so forth – this would typically be things like moles for USB or particular network interface drivers etc.
編譯固件
萬事具備欠東風,通面簡單make命令編譯:
# make

核電腦編譯
具核CPU處理器電腦進行編譯使用述參數令編譯程加速 規用 – 例使用3進程編譯 (即雙核CPU), 命令及參數:
# make -j 3

台編譯
若系統內編譯OpenWrt同處理其讓閑置I/O及CPU台編譯固件 (雙核CPU):
# ionice -c 3 nice -n 20 make -j 2

編譯簡單基本軟體包
OpenWrt發或打包軟體包,編譯簡單基本軟體包輕易編譯該軟體包 (例 軟體包cups):
# make package/cups/compile V=99

Feeds軟體包約:
# make package/feeds/packages/ndyndns/compile V=99

編譯錯誤
某種知道原編譯失敗,面種簡單知編譯底錯哪:
# make V=99 2>&1 |tee build.log |grep -i error

述編譯命令意:V99參數錯信息保存build.log輸完整詳細副本(with stdout piped to stderr)屏幕顯示錯誤
舉例說明:
# ionice -c 3 nice -n 20 make -j 2 V=99 CONFIG_DEBUG_SECTION_MISMATCH=y 2>&1 \
|tee build.log |egrep -i '(warn|error)'

The above saves a full verbose of the build output (with stdout piped to stderr) in build.log and outputs only warnings and errors while building using only background resources on a al core CPU.

H. stm32編譯程序的時候出現的問題:前提:使用庫函數,編譯器MDK

應該是你的編譯環境默認包含一些不應該包含的庫

I. 如何編譯OpenWrt

Openwrt 官方正式的發行版是已編譯好了的映像文件(後綴名bin或trx、trx2),此映像文件可從Openwrt官方網站的下載頁面中輕松獲取到,連接地址為 OpenWrt官方網站。這些編譯好的映像文件是基於默認的配置設置,且只針對受支持的平台或設備的。因此,為什麼要打造一個自己的映像文件,理由有以下四點:
您想擁有一個個性化的配置OpenWrt(彰顯個性,在朋友圈子裡顯擺顯擺,開個玩笑);
您想在實驗性的平台上測試OpenWrt;
您參與測試或參與開發OpenWrt的工作;
或者,最簡單的目的就是為了保持自己的Openwrt為最新版本;
若想實現上述目的,其實很簡單,按下述文字即可成功編譯出一個您的Openwrt來。
准備工作
在開始編譯Openwrt之前需要您做些准備工作;與其他編譯過程一樣,類似的編譯工具和編譯環境是必不可少的:
一個構建OpenWrt映像的系統平台,簡單說就是准備一個操作系統(比如Ubuntu、Debian等);
確保安裝了所需的依賴關系庫, (在debian系統中就是安裝各種需要的軟體包)
OpenWrt源代碼副本
首先, 開機登陸到支持編譯Openwrt的操作系統(廢話了)。實體機或者虛擬機(Vmware 或者 Qemu)里的操作系統都行,這里推薦使用Linux系統。 bsd和mac osx系統也可以編,但不推薦,且未驗證是否可編譯成功。下文假定您使用的是Debian操作系統,使用 apt-get 來管理包. 替代的選擇是 Ubuntu (分支 Kubuntu, Xubuntu 等即可)。
第二步, 就是安裝所需要的各種軟體包, 包括編譯器,解壓工具,特定的庫等. 這些工作可以簡單的通過鍵入以下命令 (通常需要root 或者是 sudo 許可權),以root許可權安裝下列軟體包(可能並不完整,會有提示,提示缺少即裝就可以了):
32位(x86)請執行下列命令:
# apt-get install build-essential asciidoc binutils bzip2 gawk gettext \
git libncurses5-dev libz-dev patch unzip zlib1g-dev

64位(x86_64)請執行下列命令(多裝了哪些庫或軟體包呢?請您仔細看一看哦):
# apt-get install build-essential asciidoc binutils bzip2 gawk gettext \
git libncurses5-dev libz-dev patch unzip zlib1g-dev ia32-libs \
lib32gcc1 libc6-dev-i386

參考 本列表中 所列的編譯環境所需要軟體包或庫。
某些依賴的為庫或軟體包也許操作系統中已經安裝過,此時apt-get會作出提示(提示您忽略或重新安裝的),別緊張,放輕鬆些,編譯Openwrt不會像編譯DD-WRT那樣難的(至少本人是體會到了編譯DD-WRT的難)。
最後下載一份完整的 Openwrt 源碼到編譯環境中。關於Openwrt的源代碼下載,途徑有二,一是通過 svn ,一是通過 git,建議使用 svn ,因為Openwrt主要以 svn 來維護Openwrt系統的版本。另外,請注意Openwrt中不同的分支版本,一個是用得較多的開發快照,俗稱 trunk,二是穩定版,俗稱 backfire。
安裝Subversion
若你想通過svn下載源代碼,你需安裝 Subversion。Subversion,或稱SVN, 是OpenWrt的project中用來控製版本的系統,它非常類似的 CVS的界面和使用條款。 執行下述命令即可安裝SVN,很容易的:
# apt-get install subversion

Subversion安裝完畢,通過SVN命令可獲取得到一份OpenWrt純凈源代碼。您還得創建一個目錄以便存放獲取得到的Openwrt源代碼,要獲取源代碼你還得輸入subversion命令來獲取 (svn里這種操作稱之為'check out') 。命令很簡單的,繼續看下去就能見到了,別著急,耐心點兒。
編譯流程
編譯專屬於您的設備的特定Openwrt固件以一下五個步驟:
通過Subversion命令獲得源代碼;
更新(或安裝) package feeds〔package feeds無法確切翻譯,待譯吧);
創建一個默認配置以檢查編譯環境是否搭建好了 (假如需要的話);
用Menuconfig來配置即將編譯生成的固件映像文件的配置項;
最後開始編譯固件;
下載源代碼
最後,下載一份完整的OpenWrt源代碼。你可選擇:
下載穩定發行版,或
下載開發版 (俗稱"trunk"版)。
使用發行版的源碼
截止本文時, Openwrt公開發行的穩定版為 OpenWrt 10.03 "backfire"。此版本是最穩定的,但也許不包括最新更新的補丁或最新編寫的出的新功能。
下述代碼即舉例說明了通過svn從brandkfire獲得backfire源代碼(此版本意思是從trunk分支的補丁也在backfire版本中了,即包含修復補丁):
# mkdir OpenWrt/
# cd OpenWrt/
# svn co svn://svn.openwrt.org/openwrt/branches/backfire

註解: 上述svn命令將在當前目錄創建一個 OpenWrt/backfire/ 子目錄,此目錄包含此命令獲取到的源代碼。
您也可以通過下述命令,下載不含修復補丁的backfire的原版源碼:
# svn co svn://svn.openwrt.org/openwrt/tags/backfire_10.03

使用開發版源代碼
當前的開發版本分支(trunk)已包含最新的實驗補丁。此分支或許還突破了Openwrt原來所不支持的硬體設備的限制哦,驚喜的同時也有風險存在。因此,編譯trunk版,慎之~
# mkdir OpenWrt/
# cd OpenWrt/
# svn co svn://svn.openwrt.org/openwrt/trunk/

更多詳細資料詳見: https://dev.openwrt.org/wiki/GetSource.
跟進並更新源代碼
因Openwrt的源代碼隨時都會變動,故此命令將確保您所獲取得到的源碼的最新性。下述假設您用的是backfire版本的源碼:
## Here, backfire is the directory name of the current release branch you're tracking
# cd OpenWrt/backfire/
# svn up

'svn up' 命令用於更新SVN上更新了,但本地尚未更新的這部分源代碼(本人實踐證明此命令會將本地源碼與SVN上的源碼先比較,若SVN有更新才會下載更新的部分,很實用的一個命令)。如果未指定目標路徑,則此命令將更新當前目錄及當前目錄的子目錄內的源碼。
Feeds下載
Feeds即為包含到你的OpenWrt環境中的額外軟體包的索引之類的。(feed譯名很多,莫衷一是,至2008年底為止,還沒有一個十分通用而備受認可的中文譯名;所以此文當中我們用英文feed來稱呼)。 最主要的Feeds有以下三個:
'packages' - 路由的基本功能,
'LuCI' - OpenWrt默認的GUI(WEB管理界面), 及
'Xwrt' - 其他的GUI。
一般情況,你至少需要含 'packages' 和 'LuCI'兩個Feeds。
下載完feeds之後, (為編譯OpenWrt的recipies額外的預定義包) 您可以檢查哪些feeds要包括在內。編輯在你的編譯環境的根目錄下的'feeds.conf.default'文件。
然後使用下列命令開始下載(註:可能你需要先運行cd trunk進入trunk目錄才能成功執行下列命令):
# ./scripts/feeds update -a

在此之後,下載的軟體包需要安裝。亦即指的下邊的命令啦。若路過下邊的install命令則後續make menuconfig將無法成功執行!(註:可能你需要先運行cd trunk進入trunk目錄才能成功執行下列命令):
# ./scripts/feeds install -a

只需編輯Feeds的配置文件或運行更新命令,即可很方便地更新或添加新的實驗性的packages到源碼中並編譯到OpenWrt固件去。
注意:請老壇友及舊的新聞組成員們注意了,這一步取代了創建符號鏈接symlinks的老辦法哦。
更新Feeds
諸如此類源碼,你得定期更新Feeds。 通過如上相同的命令:
# ./scripts/feeds update -a
# ./scripts/feeds install -a

注意:若你清楚地知道你不需添加新的packages到menuconfig中去,那麼你可在更新Feeds時跳過這一步。
生成配置
You may not have to make configration always after updating sources and feeds, but making it ensures that all packages from source and feeds are correctly included in your build configuration.
Defconfig
下一步是檢查編譯環境,若可進行編譯則生成默認配置:
# make defconfig

若defconfig回顯提示缺少軟體包或編譯庫等依賴,則按提示安裝所缺軟體包或庫等即可,不難的,細心點就行。
Menuconfig
menuconfig是一個基於文本的工具,它處理選擇的目標(需要還是不需要)、編譯生成軟體包(openwrt下是IPKG格式)以及內核選項(編譯成模塊還是內核)等等
# make menuconfig

在你離開並保存配置文件(默認都是.config)後,將自動配置依賴關系,讓你可以著手編譯更新的固件。
大眾可通過'menuconfig'這一簡單的圖形化的配置環境,非常輕松地編譯出專屬您本人的OpenWrt固件。
可以用'menuconfig',以開發的意圖來編譯OpenWrt的固件,為自己(個人)創造一個結構簡單但是功能強大的環境。(上句實在難翻譯,只能意譯。並且也請大家都學習下編譯OP固件,讓以OP固件盈利的人丟掉那骯臟的飯碗!)
Menuconfig或多或少有些難以說明的地方,即使是最專業的配置,也可以尋求幫助並加以解決。 需要你指定何種目標平台,要包含的package軟體包和內核模塊等均需要你指定,配置標準的過程中會包括修改:
目標平台(即路由器何種架構,BCM呢還是AR均可選擇)
選擇要包含的package軟體包
構建系統設置
內核模塊
Target system is selected from the extensive list of supported platforms, with the numerous target profiles – ranging from specific devices to generic profiles, all depending on the particular device at hand. Package selection has the option of either 'selecting all package', which might be un-practical in certain situation, or relying on the default set of packages will be adequate or make an indivial selection. It is here needed to mention that some package combinations might break the build process, so it can take some experimentation before the expected result is reached. Added to this, the OpenWrt developers are themselves only maintaining a smaller set of packages – which includes all default packages – but, the feeds-script makes it very simple to handle a locally maintained set of packages and integrate them in the build-process.
假如你需要LuCI, 要到Administration 菜單里,在LuCI組件的子菜單下, 並選擇: luci-admin-core, luci-admin-full, and luci-admin-mini組件包。
假如你不需要PPP,你可到Network菜單下取消對它的選擇,以便編譯時不包含此組件。
Menuconfig用法: 確保這些組件包是以 '*'星號標記而不是 'M'標記。
如果你是以星號 '*'標記該組件包, 則該組件包將編譯進最終生成的OpenWrt固件中。
如果你僅以 'M'標記該組件包, 則該組件包將不會編譯進最終生成的OpenWrt固件中。
The final step before the process of compiling the intended image(s) is to exit 'menuconfig' – this also includes the option to save a specific configuration or load an already existing, and pre-configured, version.
Exit and save.
Source Mirrors
The 'Build system settings' include some efficient options for changing package locations which makes it easy to handle a local package set:
Local mirror for source packages
Download folder
In the case of the first option, you simply enter a full URL to the web or ftp server on which the package sources are hosted. Download folder would in the same way be the path to a local folder on the build system (or network). If you have a web/ftp-server hosting the tarballs, the OpenWrt build system will try this one before trying to download from the location(s) mentioned in the Makefiles . Similar if a local 'download folder', residing on the build system, has been specified. The 'Kernel moles' option is required if you need specific (non-standard) drivers and so forth – this would typically be things like moles for USB or particular network interface drivers etc.
編譯固件
萬事具備,只欠東風,通過下面簡單的make命令來編譯:
# make

在多核電腦中編譯
具有多核CPU處理器的電腦進行編譯,使用下述參數可令編譯過程加速。 常規用法為 <您cpu處理器的數目 + 1> – 例如使用3進程來編譯 (即雙核CPU), 命令及參數如下:
# make -j 3

後台編譯
若你在這個系統內編譯OpenWrt的同時還處理其他,可以讓閑置的I/O及CPU來在後台編譯固件 (雙核CPU):
# ionice -c 3 nice -n 20 make -j 2

編譯簡單的基本的軟體包
當你為OpenWrt開發或打包軟體包,編譯簡單的基本的軟體包可以很輕易地編譯該軟體包 (例如, 軟體包cups):
# make package/cups/compile V=99

一個在Feeds里的軟體包大約是這樣子的:
# make package/feeds/packages/ndyndns/compile V=99

編譯錯誤
如果因某種不知道的原因而編譯失敗,下面有種簡單的方法來得知編譯到底錯在哪裡了:
# make V=99 2>&1 |tee build.log |grep -i error

上述編譯命令意為:V99參數,將出錯信息保存在build.log,生成輸出完整詳細的副本(with stdout piped to stderr),只有在屏幕上顯示的錯誤。
舉例說明:
# ionice -c 3 nice -n 20 make -j 2 V=99 CONFIG_DEBUG_SECTION_MISMATCH=y 2>&1 \
|tee build.log |egrep -i '(warn|error)'

The above saves a full verbose of the build output (with stdout piped to stderr) in build.log and outputs only warnings and errors while building using only background resources on a al core CPU.
一鍵編譯
即使用腳本來編譯Openwrt固件。許多朋友編譯Openwrt是用的腳本來編譯的,詳見: https://forum.openwrt.org/viewtopic.php?id=28267
生成的固件在哪
編譯成功後所生成的固件文件位於bin目錄下,可用如下命令查看:
# cd bin/
# ls */

清理
編譯OpneWrt時你可能需要一個清潔干凈的編譯環境。 以下操作有利用編譯工作:
清潔
清潔trunk/ 目錄,在編譯過程中使用「make clean」命令即可。 此命令將刪除bin目錄和build_dir目錄下的所有文件及文件夾
## See CAUTION below
# make clean

閱讀全文

與編譯器和固件相關的資料

熱點內容
手機qq發壓縮包 瀏覽:677
安卓機藍牙耳機如何彈出彈窗 瀏覽:111
linuxoracle環境變數設置 瀏覽:359
php去掉重復數據 瀏覽:365
C關機編程 瀏覽:767
程序員將滑鼠拉到現實世界 瀏覽:60
思科伺服器怎麼開機 瀏覽:82
減脂健身app哪個好用 瀏覽:743
照片怎麼壓縮分文件夾 瀏覽:70
感測器如何連接單片機 瀏覽:26
雲伺服器多少個 瀏覽:598
孕媽app哪個比較好 瀏覽:809
java回車轉義字元 瀏覽:759
linux啟動級別修改 瀏覽:123
單片機採集交流方法 瀏覽:285
程序員的平凡理想 瀏覽:238
floyd最短路徑演算法c 瀏覽:387
新湖app在哪裡下載 瀏覽:709
計算機圖形學涉及的演算法 瀏覽:376
阿里雲linux一鍵web 瀏覽:32