首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 系统运维 >

Openwrt研读笔记三之源码的下载和编译

2013-10-25 
Openwrt研习笔记三之源码的下载和编译原文请访问:草帽的后花园( www.ourgarden.cn )哎呀,昨天拉下一天的笔

Openwrt研习笔记三之源码的下载和编译
原文请访问:草帽的后花园( www.ourgarden.cn )

哎呀,昨天拉下一天的笔记没写,不过这也不能怪我,是我的网站服务器出问题了,发布不了….今天补上昨天的内容

 

上一篇说到刷TL-WR703N的系统成openwrt,那些都是网上搜罗的,按照着做就好了,先学习才能进步嘛

今天要记录的内容有:下载源码,ubuntu13.04下编译源码

下载源码

首先你下载得准备几个工具,下载工具:svn或者git,编译工具:ubuntu的编译软件

我们还是以ubuntu为介绍先吧,下载ubuntu13.04并安装,你可以采用virtual box或者vmware,并配置好网络,确保能否上网,也就是要保证apt-get能下载,这一步我在这里就不做介绍了,改天有时间特别制作一个文章来描述。

如果不能上网,也可以通过DVD包来制作本地更新源来满足要求,但下载源码还是要网络的。

在满足了拥有ubuntu13.04、网络畅通的情况下,我们开始进行下面的工作。

首先,通过

apt-get install git-core

apt-get install subversion

通过上述两个命令,我们分别安装了git和svn工具,这两个工具是目前网络上使用最为广泛的代码管理工具,其中git适合于分布式,svn适合于集中管理,两个软件,我个人认为git更好用,只是git的图形软件很不给力,而svn的图形软件TortoiseSVN很给力,也很容易理解和上手,只是git在命令行界面也很不错,只是有些人认为命令行的工具总是不那么容易让人理解而已,关于这两个工具的使用,我也会在另外的文章再做介绍,只是个人使用经验不多,也只能描述简单的入门吧。

安装完毕这两个工具后,即可开始下载源码了,下载源码的官方方法:https://dev.openwrt.org/wiki/GetSource

trunk (main development tree)
  • Main repository
    git clone git://git.openwrt.org/openwrt.git
  • Packages feed
    git clone git://git.openwrt.org/packages.git

    12.09 branch (Attitude Adjustment)
    • Main repository
      git clone git://git.openwrt.org/12.09/openwrt.git
    • Packages feed
      git clone git://git.openwrt.org/12.09/packages.git

      上面的方法是通过git clone下来的,这里稍微解释下,git的意思其实就是指代码仓库,每个git都会在本地拥有一个.git的文件夹进行代码的管理,这就方便了个人在本地添加,修改,删除,回退等操作,git clone是指将一个git库的代码clone到你本地,也就是你clone的代码地址和你本地进行同步,同步完成后你本地也成了保存代码的地方。

      下载完成后,就能看到对应的文件。

      下图是通过git下载完成后的tree图:

      root@geeknimo-VirtualBox:/home/geeknimo/disk/study/openwrt_source/git_code# tree -L 3
      .
      ├── 12.09
      │   ├── openwrt
      │   │   ├── BSDmakefile
      │   │   ├── Config.in
      │   │   ├── docs
      │   │   ├── feeds.conf.default
      │   │   ├── include
      │   │   ├── LICENSE
      │   │   ├── Makefile
      │   │   ├── package
      │   │   ├── README
      │   │   ├── rules.mk
      │   │   ├── scripts
      │   │   ├── target
      │   │   ├── toolchain
      │   │   └── tools
      │   └── packages
      │   ├── admin
      │   ├── devel
      │   ├── ipv6
      │   ├── lang
      │   ├── libs
      │   ├── mail
      │   ├── multimedia
      │   ├── net
      │   ├── skels
      │   ├── sound
      │   └── utils
      └── trunk
      ├── openwrt
      │   ├── BSDmakefile
      │   ├── Config.in
      │   ├── docs
      │   ├── feeds.conf.default
      │   ├── include
      │   ├── LICENSE
      │   ├── Makefile
      │   ├── package
      │   ├── README
      │   ├── rules.mk
      │   ├── scripts
      │   ├── target
      │   ├── toolchain
      │   └── tools
      └── packages
      ├── admin
      ├── devel
      ├── ipv6
      ├── lang
      ├── libs
      ├── mail
      ├── multimedia
      ├── net
      ├── send
      ├── skels
      ├── sound
      └── utils

      43 directories, 14 files

      svn的下载方法如下:

      • Development branch: ?ChangeLog

        svn co svn://svn.openwrt.org/openwrt/trunk/
        • Attitude Adjustment 12.09 branch: ?ChangeLog
          svn co svn://svn.openwrt.org/openwrt/branches/attitude_adjustment
          • Backfire 10.03 branch: ?ChangeLog
            svn co svn://svn.openwrt.org/openwrt/branches/backfire
            • Kamikaze 8.09 branch: ?ChangeLog
              svn co svn://svn.openwrt.org/openwrt/branches/8.09
        • Kamikaze 7.09 branch: ?ChangeLog

          svn co svn://svn.openwrt.org/openwrt/tags/kamikaze_7.09

          svn的代码我就不贴上来,大致是一样的。

          编译源码

          下载好源码后,还需要准备编译工具,安装的软件有些多,如果你不是root用户登陆的话,请使用sudo来执行命令。

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

          这个安装需要一些时间,所以建议大家还是制作本地的下载源比较好。

          准备好上面的工具后我们就可以开始编译了。

          进入到源码所在的目录,我这里选取的是主branch的openwrt的代码库

          假设代码所在的位置为:

          /home/geeknimo/disk/study/openwrt_source/git_code/trunk/openwrt

          将openwrt的整个目录及子目录都赋予777权限,并进行源代码更新

          chmod -R 777 openwrt

          git pull

          更新完毕后,进行种子更新

          操作方法
          • 更新种子列表,看起来是
            ./scripts/feeds update -a
            • 更新种子在menuconfig中的显示列表
              ./scripts/feeds install -a

          这个更新也需要一些时间。

          更新完毕后,再进行安装下,这两个步骤完成后开始进行编译前配置了。

          make defconfig

          make menuconfig

          执行这个命令的时候还提示了如下错误:

          Build dependency: Please do not compile as root.

          Prerequisite check failed. Use FORCE=1 to override.
          make: *** [tmp/.prereq-build] Error 1
          root@geeknimo-VirtualBox:/home/geeknimo/disk/study/openwrt_source/git_code/trunk/openwrt#

          竟然还不能用root用户进行编译,不过我在后面加上了 FORCE=1,呵呵,这也是可以的,不过还是建议大家换成普通用户进行。

          Openwrt研读笔记三之源码的下载和编译

          在这里进行我们所需要的配置

          首先选择Target System为Atheros AR7xxx/AR9xxx,因为我们的TL-WR703N的主芯片是属于Atheros公司的Atheros AR7240 CPU

          其次选择Target Profile是选择路由器的型号,我们选择(TP-LINK TL-WR703N)

          其他的就看自己的喜好了,我随意勾选了一些,先编译了试试,据说这个编译普通的机器要3-5个小时,囧。

          明天再说结果把,今天就到这里了。


热点排行