Openwrt交叉編譯
首先我先介紹下什麼是交叉編譯:
交叉編譯,簡單的說就是,就是在一個平臺上生成另一個平臺上的可執行文件,舉個例子,我我用我的電腦(x86_64平臺)編譯出路由器(mips-AR71XX)上可以執行的二進制文件,要進行交叉編譯首先就要有對應平臺的編譯器。
Openwrt的交叉編譯並不複雜。
第一步,你需要得到toolchain(工具鏈),我個人理解這個就相當於編譯器
如何得到toolchian呢?有兩種方法(推薦第一種)
1.到openwrt下載(要注意平臺,http://downloads.openwrt.org)
2.自己編譯,在編譯固件時可以看到有編譯toolchain的選項
這裏告訴大家一個非常實用的小技巧,如果用手工敲上面的命令,非常的費時費力,還很容易出錯,你可以敲完“sudo tar jxvf ./b”後按“Tab”鍵,系統將自動補全爲“sudo tar jxvf ./bin” ,後面的文件夾和文件也是同理,非常的省時省力。
安裝ToolChain
步驟1:打開虛擬機,在 /home下創建 /home/opwnWRT 文件夾【注意需要用sudo才能創建】
步驟2:先將opwnWRT安裝包 xxxxxx.tar.bz2從Windows中弄到ubuntu中去(此處使用共享文件夾)
步驟3:複製。在ubuntu中進入到 /home/opwnWRT 所在的目錄(用命令和窗口都行)
步驟4:解壓,用命令和窗口都行。解壓指令如下:tar -jxvf xxxxx.tar.bz2 。按回車鍵後讓ubnutu自動安裝直到安裝完畢。
修改ToolChain 的 PATH路徑
在一個終端中執行 . mips-openwrt-linux-gcc -v 命令後,該終端中就可以直接使用mips-openwrt-linux-gcc 了,但是隻要關掉這個終端再另外打開一個立馬就不行了。原因是我們本次終端中執行時的操作只是針對本終端,以後再打開的終端並未被執行過這個命令所以沒導出。
解決方案:如果要每次打開終端都可以看到這個環境變量,在 /etc/bash.bashrc 中
(1)sudo vi /etc/bash.bashrc
在最後一行添加
export PATH=/home/opwnWRT/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/bin:$PATH
export STAGING_DIR=/your_openwrt_path/staging_dir:$PATH
注意:
(1)上面這個“STAGING_DIR”變量中的“your_openwrt_path”是讀者實際放 openwrt源碼的根目錄,如果這個“STAGING_DIR”變量不設置的話,會在用交叉工具鏈編譯文件時有警告,但是不影響編譯結果。
(2)末尾的 :$PATH 不要弄錯,否則系統的變量會出錯,連 ls、copy等命令都操作不了。
(2)末尾的 :$PATH 不要弄錯,否則系統的變量會出錯,連 ls、copy等命令都操作不了。
(2)末尾的 :$PATH 不要弄錯,否則系統的變量會出錯,連 ls、copy等命令都操作不了。
重要事情說了3遍!!!
最後保存退出。
接着在終端執行以下命令:
source /etc/bash.bashrc
建議重啓一下ubuntu,否則可能找不到。
檢查是否安裝成功
mips-openwrt-linux-gcc -v
此時應打印出交叉編譯工具的一些信息,表示安裝成功
白浪介紹:
(1)一位自媒體極客,面向射頻、微波、天線、無線通信、智能硬件、軟件編程、滲透安全、人工智能、區塊鏈,Java、Android、C/C++、python等方向的綜合能力培養提升。
(2)各種學習資料、學習軟件分享(僅供學生學習)。
1.掃碼關注公衆號(Geekxiaobai)
2. 如在後臺發送“Python高級編程”“CST”或“HFSS” 或“Altium”等,即可免費獲得學習資源。僅供學習之用。
3. 掃碼關注後,查看往期內容,會有更多資料驚喜等着你來拿哦
想要更多相關學習資料,可以在公衆號後面留言哦,後期將會根據留言需求免費分享學習資料哦。
========******=========******========******=========******==========