找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 11169|回复: 8

如何编译Openwrt - 简化版

[复制链接]
发表于 2011-1-8 23:59 | 显示全部楼层 |阅读模式
本帖最后由 tsengtim 于 2011-1-9 00:07 编辑

很久没回来了,发一片编译的文章,有错的地方,请多指教。

总觉得依照Wiki来翻译有些别扭,尝试用自己的方式来记录一下。预备一个用来编译的Linux系统,推荐Debian或者Ubuntu,尤其对于新手,这里以Debian为基础。

以非 root 用户运行以下命令
  aptitude update
  aptitude upgrade
  aptitude dist-upgrade(在必要时)
  aptitude install 编译需要用到的软件包(详见下面的说明)
  mkdir /home/yourname/openwrt
  cd /home/yourname/openwrt
  svn co svn://svn.openwrt.org/openwrt/branches/backfire
  ./backfire/scripts/feeds update -a
  ./backfire/scripts/feeds install -a
  cd /home/yourname/openwrt/backfire
  svn up
  make menuconfig
  make

编译用软件包说明
  如果是32 bit (x86) 系统安装以下包,下面有些包依赖非常多,如果不熟悉Debian系统的话,建议一个一个安装以观察情况,其中当前的 testing 发行版是没有 jikes 和 sdcc-nf 两个软件包;
  autoconf asciidoc binutils build-essential bzip2 fastjar flex g++ gcc gawk bison libgtk2.0-dev
  libncurses5-dev libz-dev intltool jikes zlib1g-dev make ncurses-dev libssl-dev patch perl-modules
  rsync ruby sdcc unzip wget sdcc-nf gettext xsltproc zlib1g-dev subversion

  使用 64 bit (x86_64) 系统的不多说,请参考下面的命令
  # apt-get install build-essential asciidoc autoconf binutils bison bzip2
   flex gawk gettext libncurses5-dev libz-dev patch unzip zlib1g-dev
   ia32-libs lib32gcc1 libc6-dev-i386

  这里有一个对应的依赖包清单,详见下面的地址。 http://wiki.openwrt.org/doc/howt ... responding.packages

Openwrt的源代码分支说明
  这里向来自 windows 的朋友简单解释一下 Openwrt 源码的分支情况。我们知道 windows 也分 XP/VISTA/7 等等版本,假定现在最新的 windows 版本是 XP,那么我们可以简单地替代成 Openwrt 中的 backfire ,其实 XP 也只是一个代号,而非真正的版本号,在 cmd 命令符下可以用 ver 来看到你所使用的 windows 版本号,那么这个 ver 命令看到的版本号就相当于我们的 backfire 10.03 了。
  假如日后我们的 Openwrt 发行了什么 frontfire allfire 等等的代号,那么你可以想像成 VISTA/7/8/9 了。
  好了言归正传,其实 Openwrt 有几个分支,比如现在的 backfire,Kamikaze,还有早期的 Whiterussian,那么 SVN 是什么呢,SVN是一个代码版本控制系统,用来给程序员用的,类似的还有 GIT ,这也是 Linux 内核所用的版本控制系统,还有 CVS,剩下我没说的或者说错的,自行Ggoole去吧。

  通过使用 SVN 可以得到不同分支的 Openwrt 代码
  Backfire 10.03
  svn co svn://svn.openwrt.org/openwrt/branches/backfire
  Kamikaze 8.09
  svn co svn://svn.openwrt.org/openwrt/branches/8.09
  Kamikaze 7.09 (已经放弃了)
  svn co svn://svn.openwrt.org/openwrt/tags/kamikaze_7.09
  开发版分支(俗称 trunk)
  svn co svn://svn.openwrt.org/openwrt/trunk/
  使用 "tagged" 版本的代码
  svn co svn://svn.openwrt.org/openwrt/tags/backfire_10.03

  Kamikaze 分支的软件包
  Kamikaze 仅包含一些基本的软件包,有两种方法可以得到额外的软件包,一是 make package/symlinks ,二是 svn co svn://svn.openwrt.org/openwrt/packages

  如果是使用 GIT 则用以下命令获得代码
  git://nbd.name/openwrt.git (克隆自 trunk)
  git://nbd.name/packages.git (克隆自 packages)

make menuconfig 说明
    默认就是brcm-2.4平台,模块前面选项有3种:
  *:表示该模块直接编译到核心中
  M:该模块以被核心支持,可以后再安装
  空白:不支持该模块
  具体模块的起什么作用需要多google

make 命令简单说明
  make V=99
  V=99表示输出详细的debug信息

  make world
  表示编译所有

  make j=2 V=99
  如是多核CPU,加j=2 选项理论上能加快编译速度
  make -j 2 V=99可加快编译速度(不推荐使用)

  只清除某个模块
  make package/qos/clean

  只编译某个模块
  make package/qos/clean
  make package/qos/compile
  make package/qos/install

  make V=99 | tee compile_v1.0.0.log
  混合 tee 命令将编译信息放到compile_v1.0.0.log文件中方便查看。

x86的编译要点
 考虑到x86平台使用的特点,以及 OpenWrt 本身,可参考以下要点
 1. 编译所有文件系统支持,包括ext2/ext3/ext4,还有NTFS,甚至是LVM;
 2. 加入一个文本编辑器,例如vim或者nano,因为日常使用中需要用文本编辑器修改各种配置文件;
 3. 加入所有关于无线网卡的驱动,模块,各种支持程序,
 4. 一些其他常见应用--蓝牙、加密、PGP、SSL、SSH、virtual**、USB支持、3G上网卡、
 5. 编译时要到网上下载相关源码,所以可以日后下载的包尽量不选择编译;
 6. 编译好的文件在当前目录的bin文件夹下,如果是brcm-2.4,则 ls bin/brcm-2.4/ 就可以看到很多熟悉的文件了。

参考资料
  如何给 Openwrt 提交补丁
  https://dev.openwrt.org/wiki/SubmittingPatches

  Openwrt 源代码的下载方式
  https://dev.openwrt.org/wiki/GetSource

  构造编译环境
  http://wiki.openwrt.org/doc/howto/buildroot

  构造编译环境-老的文档
  http://downloads.openwrt.org/docs/buildroot-documentation.html

  本文赖以生存的基础-官方wiki中的编译教程,我翻译了编译一文中的小部分。
  http://wiki.openwrt.org/doc/howto/build

  下文有详细的编译方面说明
  http://downloads.openwrt.org/kamikaze/docs/openwrt.html
 楼主| 发表于 2011-1-9 00:06 | 显示全部楼层
md5sums                                      
openwrt-x86-generic-rootfs.cpio.gz         
openwrt-x86-generic-rootfs.tar.gz
openwrt-x86-generic-combined-ext2.img.gz     
openwrt-x86-generic-rootfs-ext2.img.gz     
openwrt-x86-generic-vmlinuz
openwrt-x86-generic-combined-jffs2-128k.img  
openwrt-x86-generic-rootfs-jffs2-128k.img  
packages
openwrt-x86-generic-combined-jffs2-64k.img   
openwrt-x86-generic-rootfs-jffs2-64k.img
openwrt-x86-generic-combined-squashfs.img   
openwrt-x86-generic-rootfs-squashfs.img

生成了多个文件,现在不知道怎么安装到U盘上去。
发表于 2011-1-9 11:58 | 显示全部楼层
要是编译Backfire 10.03-RC4的怎么搞?
 楼主| 发表于 2011-1-9 23:56 | 显示全部楼层
试试 svn co svn://svn.openwrt.org/openwrt/tags/backfire_10.03.01
发表于 2011-1-11 21:35 | 显示全部楼层
这个教程真够精简的
发表于 2011-1-11 23:33 | 显示全部楼层
非常感谢!
发表于 2011-1-11 23:44 | 显示全部楼层
  1. make menuconfig 说明
  2.     默认就是brcm-2.4平台,模块前面选项有3种:
  3.   *:表示该模块直接编译到核心中
  4.   M:该模块以被核心支持,可以后再安装
  5.   空白:不支持该模块
  6.   具体模块的起什么作用需要多google
复制代码
这里有错误,*代表的是编译进固件,M代表的是编译成ipk包,不包含进固件。
 楼主| 发表于 2011-1-12 20:48 | 显示全部楼层
本帖最后由 tsengtim 于 2011-1-12 20:49 编辑

是的,这个是抄的,没有验证过。

其实文中还有一些错误,比如 aptitude 如果不以root则要加 sudo ,make 加 V=99 参数通过性强一些,很奇怪这个参数,本来没有影响的一个参数不加通过次数却变得不高

看见反映不大懒的改,我个人认为这篇文章可看性在于以 debian 为平台和列明了编译用的软件包。
发表于 2012-3-24 23:25 | 显示全部楼层
本帖最后由 阿群 于 2012-3-24 23:32 编辑

Mark一下留着备用

backfire最新的稳定版本是10.03.1
svn co svn://svn.openwrt.org/openwrt/tags/backfire_10.03.1
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-6-18 05:10

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com

快速回复 返回顶部 返回列表