系統版本: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查看一下:
可以看出來:
openwrt-ramips-mt76x8-cudy_wr1000-squashfs-factory.bin is too big
但是實際我們需要編譯的是 MT7628 的文件,這個實際上與我們需要的沒有多大的關係,可以修改 mt76x8.mk。
vi target/linux/ramips/image/mt76x8.mk
第一種方法:不知道後遺症,但是肯定不影響 MT7628 相關的文件
第二種方法:刪掉與cudy_wr1000相關的部分的內容(慎重刪除,如果不需要則直接刪除還能省空間)
上面的基本上都是在編譯的過程中出現的問題,在openwrt這個修身養性的漫漫長路上,記得要控制好脾氣,畢竟繩命要緊!