openwrt編譯 -- 搭建屬於自己的openwrt的開發環境

系統版本:ubuntu 16.04 LTS 64bits

零、流程化、標準化的步驟,光明的大道往前走

1、先從github clone下來

HTTPS : git clone https://git.openwrt.org/openwrt/openwrt.git

如果比較慢或者不能clone可以換成:

SSH: git clone git://git.openwrt.org/openwrt/openwrt.git

2、在完成clone之後。然後在openwrt目錄下

1 ./scripts/feeds update -a 
2 ./scripts/feeds install –a

注:./scripts/feeds 這個腳本只是使軟件包出現在 make menuconfig 配置菜單中, 而並不是真正的安裝或者編譯軟件。

此過程比較慢,建議提前下載好 dl 和 feeds 文件,拷貝到對應目錄下,然後進行後續操作。

3、然後選擇硬件對應的平臺

make menuconfig

4、編譯

make V=99 或者 make V=s

在這裏個人不建議在第一次編譯的時候使用多線程編譯,容易出問題,如果實在想走出自己的風格,可以使用多線程進行編譯

make V=99 -jn # n爲使用的線程數,比如 1 線程就使用 j1

然後確保聯網沒問題,慢慢等着就行了。

一、記錄下在這條寬闊又光明的大道上馳騁的時候填的那些被莫名其妙的坑

1、如果在下載的過程中出現過早的文件結束符(EOF)

fatal: The remote end hung up unexpectedlyB | 44.00 KiB/s
fatal: 過早的文件結束符(EOF)
fatal: index-pack failed

解決:

git config --global http.postBuffer 1048576000
git config --global http.lowSpeedLimit 0
git config --global http.lowSpeedTime 999999  # 單位 秒

最主要的是:

ssh-keygen -t rsa

回車、回車、再回車

 如果還不行,則可以查看一下大神的記錄,這是傳送門:使用 git 克隆 github 上的項目失敗

2、在進行 make menuconfig 的時候保證終端不要太小,不然也會出現問題的,我正好也經歷過。

3、編譯過程中

configure: error: you should not run configure as root (set FORCE_UNSAFE_CONFIGURE=1 in environment to bypass this check)

解決:

export FORCE_UNSAFE_CONFIGURE=1
source /etc/profile
然後:
su –root  # 切換到root賬號
make V=99 # 編譯

則開始往下進行了。

4、如果出現

scripts/config/mconf: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory

/home/song/openwrt.cpy/include/toplevel.mk:136: recipe for target 'menuconfig' failed

make: *** [menuconfig] Error 127

那麼可以先用ldd查看一下:

ldd libncurses.so.5

ldd: ./libncurses.so.5: No such file or directory

安裝 libncrurses 即可,類似的問題應該會很多,類似的辦法即可。

sudo apt-get install libncrurses

5、Openwrt在編譯過程出現

mipsel_24kc_musl/linux-ramips_mt76x8/tmp/openwrt-ramips-mt76x8-cudy_wr1000-squashfs-factory.bin": No such file or directory

實際上導致此問題的原因是:

Image file /home/song/openwrt/openwrt/build_dir/target-mipsel_24kc_musl/linux-ramips_mt76x8/tmp/openwrt-ramips-mt76x8-cudy_wr1000-squashfs-factory.bin is too big

提示的錯誤爲

可以看出來:

openwrt-ramips-mt76x8-cudy_wr1000-squashfs-factory.bin is too big

但是實際我們需要編譯的是 MT7628 的文件,這個實際上與我們需要的沒有多大的關係,可以修改 mt76x8.mk。

vi target/linux/ramips/image/mt76x8.mk

第一種方法:不知道後遺症,但是肯定不影響 MT7628 相關的文件

下載測試生成的內核文件,沒有任何問題

第二種方法:刪掉與cudy_wr1000相關的部分的內容(慎重刪除,如果不需要則直接刪除還能省空間)

基於第二種方法,發現刪除不相關的內容之後(由於在編譯的過程中出現了很多類似的問題),編譯明顯的快了不少,所以,在mt76x8.mk中只保留了兩三個選項。

上面的基本上都是在編譯的過程中出現的問題,在openwrt這個修身養性的漫漫長路上,記得要控制好脾氣,畢竟繩命要緊!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章