Openwrt
引言:本文檔編譯的lean的openwrt + ath10K
編譯環境:
虛擬機: Ubuntu20.04
外部系統: win7
注意:
- 不要用 root 用戶進行編譯!
- 國內用戶編譯前最好准備好梯子
操作步驟:
一:下載源碼
https://github.com/compex-systems/lede windows環境下載源碼,這樣比較快。
或者使用 git clone https://github.com/compex-systems/lede 命令下載好源代碼,然后 cd lede 進入目錄
二:更新源(Feeds)
./scripts/feeds update -a
./scripts/feeds install -a
三:鏡像配置
make menuconfig
Menuconfig
擁有一個文本界面,它包括選擇要處理的目標平台,要編譯的軟件包,要被包含進固件文件的軟件包和一些內核設置等。
同配置Linux內核類似,幾乎每一個設置都有三個選項:y / m / n,分別代表如下含義:
* `` (按下`y`)這個包會被包含進固件鏡像
* `` (按下`m`)這個包會在生成刷新OpenWrt的鏡像文件以后被編譯,但是不會被包含進鏡像文件
* `` (按下`n`)這個包不會被編譯
當你保存你的配置后,.config
這個文件會按照你的配置被生成。
三:
make -j8 download V=s 下載dl庫(國內請盡量全局科上網)
[我沒科上網 就是下載慢一點 也沒啥問題]
四:
輸入 make -j1 V=s (-j1 后面是線程數。第一次編譯推薦用單線程)即可開始編譯你要的固件了。
[這里會有幾個問題,文章后面會有解決辦法]
五:
編譯成功后文件會保存在bin/targets文件夾下下
上傳到板子:
tftp 0x80060000 openwrt-ar71xx-generic-wpj563-squashfs-sysupgrade.bin
erase 0x9f030000 +$filesize
cp.b $fileaddr 0x9f030000 $filesize
問題匯總:
問題:
error: #error "Please port gnulib freadahead.c to your platform!
方法:
進入對應文件夾
sed -i 's/IO_ftrylockfile/IO_EOF_SEEN/' lib/*.c
echo "#define _IO_IN_BACKUP 0x100" >> lib/stdio-impl.h
問題解決,繼續正常編譯
問題2:
openwrt error: conflicting types for '__u64'
方法:
在源碼目錄中查找包含“__u64”的文件,把函數類型修改一致,查找文件指令如下
Find ./* -name “__u64”
找到后都改成unsigned long long __u64