目錄表
参考 :
从零开始学习OpenWrt
OpenWrt 开发 (二) 搭建开发环境
ENV
sudo apt-get install g++ sudo apt-get install libncurses5-dev sudo apt-get install zlib1g-dev sudo apt-get install bison sudo apt-get install flex sudo apt-get install unzip sudo apt-get install autoconf sudo apt-get install gawk sudo apt-get install make sudo apt-get install gettext sudo apt-get install gcc sudo apt-get install binutils sudo apt-get install patch sudo apt-get install bzip2 sudo apt-get install libz-dev sudo apt-get install asciidoc sudo apt-get install subversion sudo apt-get install sphinxsearch sudo apt-get install libtool sudo apt-get install sphinx-common sudo apt-get install subversion sudo apt-get install g++ flex patch sudo apt-get install libncurses5-dev zliblg-dev sudo apt-get install git-core sudo apt-get install libssl-dev sudo apt-get install gawk sudo apt-get install xz-util
下載OpenWrt
源码下载:
OpenWrt社区同时使用SVN和Git两种版本管理工具,其中SVN查看和下载命令如下:
svn list svn://svn.openwrt.org/openwrt/branches/ svn co svn://svn.openwrt.org/openwrt/branches/backfire/
SVN版本连接不稳定,推荐使用Git版本,它直接托管在github上,下面的链接给出了各个版本的下载地址:github-openwrt
git clone git://github.com/openwrt/openwrt.git
编译
將feeds.conf.default修改為feeds.conf:
cp feeds.conf.default feeds.conf
更新软件包:
./scripts/feeds update -a ./scripts/feeds install -a
编译配置:
make defconfig
配置菜單:
make menuconfig
编译
make V=s
以上命令开始编译源码,其中“V=s”是一个编译选项,s - step,它会显示编译过程,方便定位编译错误。
make make V=99 make -j V=99
(make是編譯命令,V=99表示輸出debug信息,V一定要大寫,如果要讓CPU全速編譯,就加上 -j 參數,第一次編譯最好不帶-j參數。) 編譯過程保持聯網(會從網上下載一些源碼包),所以斷網可能造成編譯中斷,編譯所需時間與電腦CPU及網絡環境有很大關系,第一次編譯時間較久,快則半小時長則2、3個小時,之後的編譯所需時間較短。編譯完成後會在源碼文件目錄出現bin文件夾(如trunk/bin/XXXX),如果你手裡的路由是原版固件需要刷OpenWrt需要選用XXX-factory.bin固件,如果路由已經刷了OpenWrt,選用升級固件XXXX-sysupgrade.bin升級用的,在升級界面升級即可。進到文件夾找到你需要的固件傳出(通過郵箱、網盤、U盤等),開始刷機吧。
编译和安装交叉工具链
1,生成交叉工具链
Toolchains 这篇文章对工具链和交叉工具链进行较简明的介绍,可以科普一下。
如果想自己编译获得 openwrt 的交叉工具链,只需要在 openwrt 的 menuconfig 顶层配置界面中,勾选上“Build the OpenWrt based Toolchain”,然后保存退出。
输入“make V=s”,生成的交叉工具链将在“openwrt/bin/ar71xx/OpenWrt-Toolchain-ar71xx-for-mips_34kc-gcc-4.8-linaro_uClibc-0.9.33.2.tar.bz2”下找到。
2,安装交叉工具链
openwrt 交叉工具链和一般的 linux 软件包一样,需要将其解压到需要安装的目录中,然后设置环境变量即可。下面是安装步骤。
1 ) 解压交叉工具链压缩包
这里我们演示将交叉工具链安装到 ubuntu 的“/opt”目录下。首先切换到 openwrt 的根目录下,输入如下命令:
sudo tar jxvf ./bin/ar71xx/OpenWrt-Toolchain-ar71xx-for-mips_34kc-gcc-4.8-linaro_uClibc-0.9.33.2.tar.bz2 -C /opt/
提示输入超级用户密码后,系统将交叉工具链压缩包解压到 ubuntu 系统的/opt/目录下。
2 )设置环境变量
sudo vi /etc/bash.bashrc
在最后一行添加
export PATH=/opt/OpenWrt-Toolchain-ar71xx-for-mips_34kc-gcc-4.8-linaro_uClibc-0.9.33.2/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/bin:$PATH export STAGING_DIR=/opt/OpenWrt-Toolchain-ar71xx-for-mips_34kc-gcc-4.8-linaro_uClibc-0.9.33.2/
保存退出。
需要注意的是:
1,上述的设置包含了环境变量PATH的设置和STAGING_DIR的设置,前者主要让shell能搜索到你的toolchain工具,后者不设置会报warning。
2,环境变量的表示方法“$PAHT”与Windows相似,不同的是,它的分隔符是冒号“:”。
3,这些路径的设置最好不要手动敲,而是直接拷贝,手动敲很容易敲错,我就在这个问题上踩过坑。
执行命令:
source /etc/bash.bashrc
3 )检查是否安装成功
mips-openwrt-linux-gcc -v
此时应打印出交叉编译工具的一些信息,表示安装成功。
安装了toolchain,就可以尝试编译第一个程序“hello_world”,编译好后,传到开发板,执行时,报错“permission denied”,这个是文件的权限问题,可以用“ls -l”查看文件的权限,然后用“chmod 777 hello_world”将它修改为可执行权限,然后运行就OK啦