一.下载源码及配置:
普通用户模式下:
sudo apt-get install git-core //安装git工具
sudo apt-get install subversion //安装svn工具
mkdir openWrt
cd openWrt
svn下载源码方法如下:
trunk开发版: svnco svn://svn.openwrt.org/openwrt/trunk/
backfire稳定版: svnco svn://svn.openwrt.org/openwrt/branches/backfire
准备编译工具:
sudo apt-getinstall gcc g++ binutils patch bzip2 flex bison make autoconf gettext texinfounzip sharutils subversion libncurses5-dev ncurses-term zlib1g-dev subversion git-core gawk asciidoc libz-dev
cd trunk:
./scripts/feeds update –a //更新扩展
./scripts/feedsinstall –a //安装扩展
make defconfig //测试编译环境
make menuconfig // 编译固件,进入定制界面
配置内核:
Target System–>AtherosAR9XXX //主芯片,cpu型号
Target Profile–>NETGEARWNDR3800 //路由器型号
选择Toolchain;
make V=99 //编译
二.原厂固件刷成openWrt步骤:
型号:WNDR3800
1.电脑主机与路由器LAN口相连,用笔捅住路由器复位键后开启电源,直到电源指示灯变为绿色闪烁后释放。(电源指示灯:黄->黄色闪烁->绿->绿色闪烁)
2.tftp方式刷路由器:
root@zlk-pc:/home/zlk/wndr3800#tftp
tftp> mode binary
tftp>connect 192.168.1.1
tftp>put wndr3800.img
Sent7995521 bytes in 1.3 seconds
tftp>quit
3.输入192.168.1.1进入Luci界面配置
之后即可直接上传不同固件版本
.img和.bin固件链接:http://pan.baidu.com/s/1cog9Vg
:
三.交叉编译:
交叉编译工具链:
cd openWrt/trunk/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/bin/
ls
./mips-openwrt-linux-gcc hello.c -o hello //交叉编译hello.c
scp/home/zlk/openWrt/trunk/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/bin/hello root@192.168.1.1: //上传到路由器
ssh 192.168.1.1
ls
./hello //成功!
可能遇到的问题:
1,用OpenWrt的交叉编译器编译外部程序文件,遇到如下错误:
mips-openwrt-linux-gcc: warning: environment variable ‘STAGING_DIR’ not defined
解决办法是在命令行输入:
export STAGING_DIR=(你的OpenWrt目录的绝对路径)/staging_dir
2,上传到openWrt运行时,遇到如下错误:
-ash: ./hello: not found
解决办法是在主机上使用静态编译:
./mips-openwrt-linux-gcc -static -o hello hello.c
以上编译针对的都是简单的程序,实际上对于大型源码,需要链接。
附:scp指令copy文件:
ps -e | grep ssh
2105 ? 00:00:01 ssh-agent
29729 ? 00:00:00 sshd
若没有sshd安装:apt-get install openssh-server
从本地到远程: scp /home/zlk/KVM.odt zlk@192.168.1.225:/home/zlk/ KVM.odt
从远程到本地: scp zlk@192.168.1.225:/home/zlk/KVM.odt /home/zlk/ KVM.odt