之前自己编译OpenWRT的一些记录,现在搬上来。简单介绍了编译环境的准备,编译过程,以及一些注意事项。

准备工作


本人是在Ubuntu环境下编辑的,首先安装编译所需要的组件包:

sudo apt-get update
sudo apt-get upgrade sudo apt-get install gcc
sudo apt-get install g++
sudo apt-get install binutils
sudo apt-get install patch
sudo apt-get install bzip2
sudo apt-get install flex
sudo apt-get install bison
sudo apt-get install make
sudo apt-get install autoconf
sudo apt-get install gettext
sudo apt-get install texinfo
sudo apt-get install unzip
sudo apt-get install sharutils
sudo apt-get install subversion
sudo apt-get install libncurses5-dev
sudo apt-get install ncurses-term
sudo apt-get install zlib1g-dev
sudo apt-get install gawk
sudo apt-get install asciidoc
sudo apt-get install libz-dev

官网提供的如下:

Ubuntu 12.04LTS:

sudo apt-get install build-essential subversion git-core libncurses5-dev zlib1g-dev gawk flex quilt libssl-dev xsltproc libxml-parser-perl mercurial bzr ecj cvs unzip

Ubuntu 64bit:

sudo apt-get install build-essential subversion libncurses5-dev zlib1g-dev gawk gcc-multilib flex git-core gettext

但个人还是建议一个个安装,方便识别错误。

下载OpenWRT源码


这里有具体的下载版本:https://dev.openwrt.org/wiki/GetSource

backfire据说较为稳定,但是支持的路由器没有trunk多,trunk更多称之为测试版,但编译好后使用也没什么问题。Attitude Adjustment也是一个稳定版本,我就选择的是12.09 branch(Attitude Adjustment)。

选好版本后,在自己的主目录下新建一个目录,取名 openwrt ,如下:

mkdir openwrt

然后进入新建目录并通过git下载OpenWRT源码,如下:

cd openwrt
git clone git://git.openwrt.org/12.09/openwrt.git

添加feeds并更新需要的组件包


此处就是下载一些你之后要编译进firmware里的一些软件。若有自己需要额外添加的组件,可以通过添加feeds来实现。比如,我需要添加openvswitch的支持,在目录下输入如下命令:

echo 'src-git openvswitch git://github.com/schuza/openvswitch.git' >> feeds.conf.default

然后,更新下载feeds组件包并安装:

./scripts/feeds update -a  //更新下载全部软件包./scripts/feeds update [包名])  //单独更新下载某软件包
./scripts/feeds install -a //安装全部软件包./scripts/feeds install [包名] //单独安装某软件包

menuconfig自定义选择


直接在 [openwrt主目录] 下输入命令  make menuconfig  即可开始自定义选择组件。注意之前没有 update 和 install feeds,则此处就会发现找不到相应的组件!这个是个图形化界面,选完之后保存(Y是选中,N是取消),其实写入了 .config 文件。

几个选择建议:(不过一切按需自己选)

* 添加luci及中文支持

LuCI—>Collections—– <*> luci
LuCI—>Translations—- <*> luci-i18n-chinese

* 添加USB挂载

Base system —> <*>block-mount

* 添加UTF-8编码

Kernel modules —> Native Language Support —> <*> kmod-nls-utf8

* 添加硬盘格式支持

Kernel modules —> Filesystems —> <*> kmod-fs-ext4

若之前添加过自己的组件,就对应选择上,否则编译不进去!

全部选择完,一定记住保存,才能成功写入  .config 文件。

编译前注意事项


这个是我遇到的问题了,最初编译的时候,编译过程不报错,但最后老是在bin文件夹下找不到需要的bin文件,最后才知道是默认的flash大小设置有点小,需要更改。我的路由器型号WL841N_V7(硬件方面改装成16M的flash),所以把默认的4M改成了8M,这样编译后就没问题了。

需要修改的文件

1.  [openwrt主目录] /tools/firmware-utils/src/mktplinkfw.c

{

    .id= "TL-WR841NDv7",

    .hw_id= HWID_TL_WR841ND_V7,

    .hw_rev= 1,

    .layout_id= "8M",   //这儿原来是4M

    }

2.  [openwrt主目录] /target/linux/ar71xx/image/Makefile

$(eval $(call SingleProfile,TPLINK-LZMA,$(fs_64kraw),TLWR703,tl-wr703n-v1,TL-WR703N,ttyATH0,115200,0x07030101,1,8Mlzma))   //之前是4Mlzma 

编译


一般情况下,编译直接在 [openwrt主目录] 下输入命令 make V=99 。可以查看编译过程具体信息。直接make无具体信息。编译完成后,在bin目录下就可以找到你编译好的bin文件,以及bin/packages下编译好的一些ipk文件,ipk文件可以直接安装于刷好的OpenWRT中。

注意:此处千万不要以root权限执行make,否则报N多错误。

另附一些编译选项:

1. 在多核电脑中编译,常规用法为【 cpu处理器的数目 + 1】– 例如使用3进程来编译 (即双核CPU), 命令及参数: make -j 3 。这样可以加速编译,不过我没试过。

2. 后台编译,你还在忙其他,不想让编译耗费太多资源,只使用一些空闲的I/O和CPU能力来编译: ionice -c 3 nice -n19 make -j 2

3. 单独编译某个包: make package/[包名]/compile V=99 。编完后在bin/packages下会找到对应的ipk文件。

4. 重新编译某个包: make package/[包名]/{clean,compile,install} V=99 。

最后,贴两个官网的编译说明:

http://wiki.openwrt.org/doc/howto/buildroot.exigence

https://dev.openwrt.org/wiki/GetSource

OpenWRT编译记录--TPLINK_WR841ND_V7的更多相关文章

  1. openwrt编译环境搭建

    1,首先安装ubuntu系统,这里安装的是虚拟机 2,安装openwrt编译所需环境  apt-get install build-essential libncures5-dev gawk libs ...

  2. OpenWRT 编译 error GNU libiconv not in use but included iconv.h is from...

    OpenWRT 编译 error GNU libiconv not in use but included iconv.h is from... 编译的时候碰到一个常见的错误,但是却在一个陌生的地方爆 ...

  3. OpenWrt编译

    OpenWrt编译简单过程1,OpenWrt编译环境准备sudo apt-get install gcc g++ binutils patch bzip2 flex bison make autoco ...

  4. 【笔记】搭建OpenWrt编译环境

    参考书目<B智能路由开发指南> 目标:搭建一个OpenWrt编译环境,可以同时在家里和公司使用. [2018-09-13] 刚开始想用自己的电脑共享远程桌面,但不知道什么原因搞不定,所以干 ...

  5. OpenWrt编译后生成的bin文件:jffs2与squashfs、factory与sysupgrade

    OpenWrt编译后会生成多个bin文件,比如 openwrt-ar71xx-generic-tl-wr841nd-jffs2-factory.bin 8126464 openwrt-ar71xx-g ...

  6. openwrt MT7620 固件编译记录

    下载,安装相关软件 git clone git@github.com:openwrt-mirror/openwrt.git sudo apt-get install gcc g++ binutils ...

  7. openwrt编译出错处理记录

    1.代码从windows复制过来编译报错处理,参考:http://www.360doc.com/content/13/1016/21/3884271_321966616.shtml 2.编译lua-s ...

  8. OpenWrt编译问题记录

    错误一.config.status: error: cannot find input file: `xmetadataretriever/Makefile.in' configure: creati ...

  9. 【工具】openwrt安装记录

    步骤: 1  从以太网引导启动.由于我们实验室在服务器上放了一个openwrt镜像,安装时先从以太网启动,将服务器上的镜像载入到RAM中启动系统. 2  用SCP将在PC上编译好的openwrt-XX ...

随机推荐

  1. 设计模式之 - 外观模式 (Facade design pattern)

    1. 模式意图:  为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更容易使用. 2. 结构 3. 工厂方法模式C#实现 using System; ...

  2. mpi和cuda混合编程的正确编译

    针对大数据的计算,很多程序通过搭建mpi集群进行加速,并取得了很好的效果.算法内部的加速,当前的并行化趋势是利用GPU显卡进行算法加速.针对并行性非常好的算法,GPU加速效果将远大于集群带来的加速效果 ...

  3. Android Device Chooser中显示Target unknown解决方法

    手机插在电脑上准备调试程序来着,通过eclipse运行时,弹出的Android Device Chooser中显示设备名是?????,Target未知,无法继续运行. 可以通过以下步骤解决(Ubunt ...

  4. SQlServer---时间的操作

    select Day(getdate())--当前日是这个月的第几天 -Day(getdate()))))--当前月有多少天 -Day(getdate()))))-Day(getdate())--当前 ...

  5. React使用小结

    园子都荒废两个月了,实在是懒呀.. 近段时间用React开发了几个页面,在使用过程中着实碰到了一些问题,估计刚开始学习的伙伴们都会遇到各种各样的坑 总结记录一下,只看文档是碰不上问题的,内容基础也不基 ...

  6. JS高程5.引用类型(5)Array类型的操作方法

    一.操作方法 1.concat()方法 基于当前数组中的所有项创建一个新数组.具体说,是先创建当前数组的一个副本,然后将接收到的参数添加到这个副本的末尾,最后返回新构建的数组.在没有给concat() ...

  7. webStorm支持.wxml文件高亮显示

    微信小程序官方说明需要在微信开发者工具中开发运行,但这个工具着实不咋地. 我是使用webstrom编辑,然后在微信开发者工具中热加载查看效果,因为webstrom默认并不支持*.wxml,添加使用xm ...

  8. JMS(java消息服务)整合Spring项目案例

    转载自云栖社区 摘要: Sprng-jms消息服务小项目 所需的包: spring的基础包 spring-jms-xx包 spring-message–xx包 commons-collection-x ...

  9. Python wifi掉线重连接

    原理很简单,通过python执行dos命令 : ping 和 netsh 需要用到os和time模块 代码如下: >>> import os >>> print ' ...

  10. CSS3 background-size:cover/contain

    background-size的cover和contain指定背景图片的自适应方式,只能对整张图片进行缩放. cover是拉伸图片使之充满元素,元素肯定是被铺满的,但是图片有可能显示不全. conta ...