您的位置:首页 > 运维架构

openwrt编译及第一个安装包教程

2017-09-02 16:56 861 查看
Date: 2017.03.14

Made:SuperDeverloper

Email: na1206@live.com

Target: For mt7688 based board

说明:本人在学习过程中走了不少弯路,希望本文档能为后来者提供便利。欢迎复制和使用本文档。本文档记录了搭建openwrt编译环境以及快速创建ipk包(openwrt上的安装程序)。本文档在实际应用中做过几次修改,以帮助使用者正确编译。

1.安装ubuntu16.04

Ubuntu常用命令:

设置ROOT权限:

$ sudo passwd root


开启SSH服务:

$ sudo apt-get install openssh-server
$ service ssh start
$ ps–e|grep ssh     //查看SSH服务是否开启,注意保持联网


安装应用程序:

$ sudo apt-get install ****


2.安装依赖包

apt-get install g++
apt-get install libncurses5-dev
apt-get install zlib1g-dev
apt-get install bison
apt-get install flex
apt-get install unzip
apt-get install autoconf
apt-get install gawk
apt-get install git
apt-get install make
apt-get install gettext
apt-get install gcc
apt-get install binutils
apt-get install patch
apt-get install bzip2
apt-get install libz-dev
apt-get install subversion
以上软件安装完成,编译报错时安装以下文件
apt-get install libssl-dev


www.openwrt.com/download下载适合自己开发平台的工具包,复制到根目录下的/opt目录,解压:

$tar jvxf    **                              //如果你的开发板提供了SDK,在SDK目录下会有这个工具包,在SDK/STAGING_DIR目录下


至此开发环境搭建完成!!

3.编译openwrt

cd到openwrt根目录下

cd /superwen/work/openwrt


执行

$ sudo make menuconfig


选择目标平台


Target System :RT288X/RT3xxx
Subtarget : MT7688 based boards
Target Profile: LinkIt7688




在这里选择自己对应的平台就可以了

选择Exit退出,选YES保存配置

重点:

在openwrt根目录下执行

$sudo make dirclean              //不执行这一步会报错


在openwrt根目录下执行

make V=99         //第一次大概2-4小时能编译完成,之后再编译就快了


编译完成后在bin目录下生成相应文件,可烧写到板子上,烧写方法各自的板子自带教程,这里就不详细说明了

4.获取属于自己开发板的SDK包

在openwrt目录下执行

make menuconfig


按空格键选择

Build the Openwrt SDK
Package the Openwrt-based Toolchain
Advanced configuration options(for developers)
-> Toolchain Options
->Build gdb               //需要用空格键先选择上再回车进入下一级菜单,否则打开选项是空的




保存并退出 执行make V=99

在bin目录下生成对应的OPENWRT-SDK文件,将此文件解压获得对应文件夹



复制文件夹到非openwrt目录更名为openwrt-sdk,cd进入此文件夹,执行make V=99 若编译无错误,说明获取openwrt sdk成功



5.第一个openwrt上的应用程序hello

在openwrt/package/utils/目录下任一复制一份文件夹到OPENWRT-SDK/package,以usbreset为例,该文件夹下结构简单,包含一个src文件夹和一份Makefile,src文件夹下有一份usbreset.c文件



i. 修改usbreset.c的文件名文hello.c

ii. 修改usbreset.c的文件内容

删除该文件所有内容并输入如下代码

#include<stdio.h>
int main(void){
printf(“Hello opwrt!!”);
return 0;
}


保存并退出

iii. 修改Makefile文件

打开该文件,将所有usbreset字符全部替换为hello,



替换后的Makefile



其余地方不要做任何改动,保存并退出

在openwrt-sdk根目录下执行

make menuconfig


在Utilities->中找到hello,并按空格键将hello前面标记成M

在openwrt-sdk/bin/base目录下生成hello***.ipk文件 //如果你复制的不是USBRESET文件,生成的文件所在路径可能不一样,但是都在bin目录下



6.上传ipk文件

在openwrt-sdk/bin/base 目录下执行

$ sudo scp hello***.ipk root@192.168.1.1:                //OPWRT 的IP地址,别忘记冒号
输入密码后上传完成




切换到openwrt操作

此openwrt接收到的文件保存在root/目录下

# opkg install hello***.ipk


安装完成后输入

hello




Openwrt在串口上输出Hello opwrt!!

以后要编写自己的程序就可以以此为模板进行编写,但是这个方法只能编写一个C文件的工程,要编写更大的工程需要深入学习下Makefile.当然,能找到合适的模板来改也是非常便捷的方式

本教程Over!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息