#如何为OpenWRT设备编译模块?
1.收集信息
a. 收集硬件设备信息
b. 收集系统信息
a. 收集硬件设备信息
#查看CPU信息
root@OpenWrt:/proc# cat cpuinfo
system type : Ralink RT3052 id:1 rev:3
machine : HuaWei HG255D
processor : 0
cpu model : MIPS 24KEc V4.12
BogoMIPS : 255.59
wait instruction : yes
microsecond timers : yes
tlb_entries : 32
extra interrupt vector : yes
hardware watchpoint : yes, count: 4, address/irw mask: [0x0ffc, 0x0ffc, 0x0ffb, 0x0ffb]
isa : mips1 mips2 mips32r1 mips32r2
ASEs implemented : mips16 dsp
shadow register sets : 1
kscratch registers : 0
core : 0
VCED exceptions : not available
VCEI exceptions : not available
#查看TTL频率
root@OpenWrt:/proc# cat cmdline
console=ttyS0,57600 rootfstype=squashfs,jffs2
b. 收集系统信息
#查看Linux版本信息
root@OpenWrt:/etc# uname -a
Linux OpenWrt 3.10.49 #1 Sat Mar 5 10:09:17 UTC 2016 mips GNU/Linux
root@OpenWrt:/proc# cat /proc/version
Linux version 3.10.49 (wenzhi@ASUS) (gcc version 4.8.3 (OpenWrt/Linaro GCC 4.8-2014.04 r48549) ) #1 Sat Mar 5 10:09:17 UTC 2016
#查看OpenWRT版本信息
root@OpenWrt:/etc# cat /etc/openwrt_release
DISTRIB_ID="OpenWrt"
DISTRIB_RELEASE="Barrier Breaker"
DISTRIB_REVISION="r48549"
DISTRIB_CODENAME="barrier_breaker"
DISTRIB_TARGET="ramips/generic"
DISTRIB_DESCRIPTION="OpenWrt Barrier Breaker 14.07"
DISTRIB_TAINTS="no-all"
2. 下载系统源码
我们知道设备使用OpenWRT版本后可以到GitHub上下载对应tag的源码进行编译,如我的设备OpenWRT版本是14.07,那我就去下载V14.07的tag源码
但当前的GitHub里已经没有此版本的源码了,我想编译aria2(自带的aria2不能下载种子,所以想重新编译)怎么办呢?
我们可以使用opkg update更新安装包,此时会在命令行打印出此版本的package下载地址,我们只需知道这个地址即可找到对应的OpenWRT编译的SDK,注意不是源码
如,
root@OpenWrt:~# opkg update
Downloading http://downloads.openwrt.org/barrier_breaker/14.07/ramips/rt305x/packages/base/Packages.gz.
我们只需使用ttp://downloads.openwrt.org/barrier_breaker/14.07/ramips/rt305x/,在页面的下方就有我们想要的SDK压缩包,
3. 编译SDK
1.解压SDK
2.使用./script/feed update -a更新模块package
3.使用./script/feed install -a将模块与编译环境关联
4.使用make menuconfig进行模块配置.如我想要为aria2添加种子和磁力支持,勾选相应的选项保存即可
5.使用make pakcage/xxx/compile进行编译,如我要编译aria2,则使用make pakcage/aria2/compile.编译产物位于根目录下的 bin/ramips/packages/packages/即可看到编译的ipk安装包
4. 安装ipk程序
将新的ipk程序上传到路由器上,使用opkg install xxxx.ipk即可.如果是替换原有的程序,也无需将原先的程序卸载,直接安装即可.
5. 遇到问题
1.使用make menuconfig进行编译配置错误
错误信息如下:
client@linux:~/Desktop/OpenWrt-SDK-ramips-for-linux-x86_64-gcc-4.8-linaro_uClibc-0.9.33.2$ make menuconfig V=s
make[1]: Entering directory `/home/client/Desktop/OpenWrt-SDK-ramips-for-linux-x86_64-gcc-4.8-linaro_uClibc-0.9.33.2/scripts/config'
/usr/bin/ld: zconf.tab.o: relocation R_X86_64_32S against symbol `symbol_yes' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: Nonrepresentable section on output
collect2: error: ld returned 1 exit status
make[1]: *** [mconf] Error 1
make[1]: Leaving directory `/home/client/Desktop/OpenWrt-SDK-ramips-for-linux-x86_64-gcc-4.8-linaro_uClibc-0.9.33.2/scripts/config'
make: *** [scripts/config/mconf] Error 2
解决方式:make -C scripts/config clean