OpenWrt 开发 (二) 搭建开发环境

  本文主要介绍如何搭建 OpenWrt 的开发环境,大部分资源都来自网络,你可以将它看成是一个资源整理帖,节省搜索时间。OpenWrt 开发环境的搭建大致分为以下几步:

- 安装虚拟机
- 安装 Linux-ubuntu 系统
- 安装和检查编译环境
- 下载 OpenWrt 源码
- 编译
- 部署

参考资源:
- Ubuntu 使用Openwrt SDK交叉编译ipk包
- 基于ubuntu14.04搭建OpenWrt开发环境


-Ubuntu 14.04安装openwrt

一、VirtualBox 和 Ubuntu

1,VirtualBox
  我选择的虚拟机是开源免费的 VirtualBox ,你可以在其 官网 方便地下载最新的安装版本和增强包(Extension Pack),而且官网也有 “用户手册”。如果觉得开英文麻烦,可以参考这个 中文教程 。值得注意的是,一定要安装和配置增强包。此外,在各个虚拟机的“设备->增强功能”需要单独安装。如果需要设置“共享文件夹”,可以参考这个链接
  vboxmanager 命令行教程vboxmanager 官方文档

2,Ubuntu
  同样地,Ubuntu也可以在其 官网 下载,推荐使用32位版本 —— ubuntu-16.04-desktop-i386,它相对占用资源要少,在虚拟机里运行不卡。
- 中文安装教程
- sourcelist总结
- 如何修改sourcelist
- Ubuntu 更新软件源
- 编译环境安装

需要注意的是:
1,更新软件源后,需要运行以下命令进行更新:

sudo apt-get update

关于最新的 source list ,推荐使用 baidu 搜索,难得一次它比 google 的搜索结果更好。

2,《智能路由开发指南》中推荐这样配置编译环境:

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 源码包中的 README文件中也包含了一份编译环境配置的工具清单。重要的是:需确认这些工具都安装成功了。


二、OpenWrt 源码下载和编译

1,源码下载
  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

2,配置和编译
  源码编译的过程事实上分为三步:更新软件包、编译配置和make,这些步骤都可以通过读“README”获知。

./scripts/feeds update -a
./scripts/feeds install -a

以上命令更新软件包

make defconfig

以上命令检查编译配置

make menuconfig

以上命令开启配置菜单。配置完成后,保存并退出配置菜单,然后就可以开始编译了。

make V=s

以上命令开始编译源码,其中“V=s”是一个编译选项,s - step,它会显示编译过程,方便定位编译错误。
这一部分的内容主要参考 从零开始学习OpenWrt

注意:
  编译的过程中一般出现的错误都是“下载某个第三方开源包失败”,这是因为 OpenWrt 的源码中不包含第三方开源包,而只包含链接,在第一次编译的时候会去相干链接上下载,而这些第三方开源包的服务器大多位于境外,经常会导致失败。
  如果下载失败,你可以根据错误信息提示自行搜索对应的软件包,下载并放到源码根目录下的 “dl”文件夹中,然后重新 make 。网上有不少这类 OpenWrt 依赖包下载链接,比如 Index of OpenWrt15.05.1


三、编译和安装交叉工具链

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.3
3.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-m
ips_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啦

猜你喜欢

转载自blog.csdn.net/sagittarius_warrior/article/details/78833447