欢迎来到【知识店铺源码】【阿里jdk源码下载】【qt linux 编译源码】openwrt源码结构-皮皮网网站!!!

皮皮网

【知识店铺源码】【阿里jdk源码下载】【qt linux 编译源码】openwrt源码结构-皮皮网 扫描左侧二维码访问本站手机端

【知识店铺源码】【阿里jdk源码下载】【qt linux 编译源码】openwrt源码结构

2024-11-23 07:36:04 来源:{typename type="name"/} 分类:{typename type="name"/}

1.openwrt编译流程
2.如何编译OpenWrt
3.如何在OpenWRT环境下做开发
4.openwrt是码结什么意思
5.OpenWRT开发之创建软件包

openwrt源码结构

openwrt编译流程

       编译OpenWRT源码至Ubuntu下,需先进入OpenWRT根目录。码结通常,码结简单操作为执行命令make V=。码结知识店铺源码若系统为多核处理器,码结为加速编译过程,码结可添加-j选项,码结如make –j3 V=。码结在编译过程中,码结系统将自动下载所需软件包,码结请确保网络畅通。码结阿里jdk源码下载若在编译时遇到下载失败,码结可先执行make download指令,码结提前下载所需包,码结以避免后续错误。码结

       初次编译耗时较长,qt linux 编译源码且需下载大量源码包,建议使用较好的***,以加速过程。完成编译后,会在源码目录中生成一个名为bin的商城模板加源码文件夹,其中包含两个文件:openwrt-ramips-rtx-wrn-squashfs-factory.bin 和 openwrt-ramips-rtx-wrn-squashfs-sysupgrade.bin。根据路由器的原始固件或已安装的OpenWRT版本,选择相应的固件进行刷写。

       在编译过程中,掌握一些技巧有助于提升效率。超市管理源码大全例如,执行make clean可以清理基本编译文件,make dirclean则会深度清理文件,相当于执行make clean后再清除交叉编译工具链目录。使用make distclean则会清除所有相关东西,包括下载的软件包、配置文件及feed内容等。在个人开发中,常遇menuconfig无法更新问题,可通过删除tmp缓存目录解决。预先下载软件包,再执行编译的make download V=方法同样有效。最后,删除.config文件以清空所有配置。

如何编译OpenWrt

       ã€€ã€€å‡†å¤‡å·¥ä½œ

       ã€€ã€€åœ¨å¼€å§‹ç¼–译Openwrt之前需要您做些准备工作;与其他编译过程一样,类似的编译工具和编译环境是必不可少的:

        一个构建OpenWrt映像的系统平台,简单说就是准备一个操作系统(比如Ubuntu、Debian等);

        确保安装了所需的依赖关系库, (在debian系统中就是安装各种需要的软件包)

        OpenWrt源代码副本

       ã€€ã€€é¦–先, 开机登陆到支持编译Openwrt的操作系统(废话了)。实体机或者虚拟机(Vmware 或者 Qemu)里的操作系统都行,这里推荐使用Linux系统。 bsd和mac osx系统也可以编,但不推荐,且未验证是否可编译成功。下文假定您使用的是Debian操作系统,使用 apt-get 来管理包. 替代的选择是 Ubuntu (分支 Kubuntu, Xubuntu 等即可)。

       ã€€ã€€ç¬¬äºŒæ­¥, 就是安装所需要的各种软件包, 包括编译器,解压工具,特定的库等. 这些工作可以简单的通过键入以下命令 (通常需要root 或者是 sudo 权限),以root权限安装下列软件包(可能并不完整,会有提示,提示缺少即装就可以了):

       ã€€ã€€ä½(x)请执行下列命令:

       # apt-get install build-essential asciidoc binutils bzip2 gawk gettext \

        git libncurses5-dev libz-dev patch unzip zlib1g-dev

       ã€€ã€€ä½(x_)请执行下列命令(多装了哪些库或软件包呢?请您仔细看一看哦):

       # apt-get install build-essential asciidoc binutils bzip2 gawk gettext \

        git libncurses5-dev libz-dev patch unzip zlib1g-dev ia-libs \

        libgcc1 libc6-dev-i

       ã€€ã€€å‚考 本列表中 所列的编译环境所需要软件包或库。

       ã€€ã€€æŸäº›ä¾èµ–的为库或软件包也许操作系统中已经安装过,此时apt-get会作出提示(提示您忽略或重新安装的),别紧张,放轻松些,编译Openwrt不会像编译DD-WRT那样难的(至少本人是体会到了编译DD-WRT的难)。

       ã€€ã€€æœ€åŽä¸‹è½½ä¸€ä»½å®Œæ•´çš„ Openwrt 源码到编译环境中。关于Openwrt的源代码下载,途径有二,一是通过 svn ,一是通过 git,建议使用 svn ,因为Openwrt主要以 svn 来维护Openwrt系统的版本。另外,请注意Openwrt中不同的分支版本,一个是用得较多的开发快照,俗称 trunk,二是稳定版,俗称 backfire。

如何在OpenWRT环境下做开发

       1、搭建开发环境

              é¦–先,在执行make menuconfig后,会出现下图:

       ã€€ã€€å…¶ä¸­ï¼Œå›¾ä¸­çº¢æ¡†éƒ¨åˆ†æ˜¯æˆ‘定制路由器的系统版本,大家可以根据不同的路由器进行不同的选择;绿框部分表示我们需要编译一个SDK开发环境(默认情况下,此项未勾选)。

       ã€€ã€€ç¼–译过程中需要通过官网下载很多相关的软件包,所以必须保证能够顺利连上外网。由于下载速度的限制,编译过程大概需要数小时。编译结束后,所有的产品都会放在编译根目录下的bin/yourtarget/. 例如:我所编译的产物都放在./bin/brcmxx/下,其中文件主要有几类:

       ã€€ã€€ï¼ˆ1).bin/.trx 文件: 这些都是在我们所选的target-system的类别之下,针对不同路由器型号、版本编译的路由器固件。这些不同路由器的型号和版本是openwrt预先设置好的,我们不需要更改。至于.bin和.trx的区别,一种说法是,第一次刷路由器的时候,需要用.bin文件,如果需要再升级,则不能再使用.bin文件,而需要用.trx文件。原因是,.bin是将路由器的相关配置信息和.trx封装在一起而生成的封包,也就是说是包含路由器版本信息的.trx。在第一次刷固件的时候,我们需要提供这样的信息,而在后续升级时,则不再需要,用.trx文件即可。

       ã€€ã€€ï¼ˆ2)packages文件夹: 里面包含了我们在配置文件里设定的所有编译好的软件包。默认情况下,会有默认选择的软件包。

       ã€€ã€€ï¼ˆ3)OpenWrt-SDK.**.tar.bz2: 这个也就是我们定制编译好的OpenWRT SDK环境。我们将用这个来进行OpenWrt软件包的开发。例如,我所编译好的SDK环境包为:/bin/brcmxx/OpenWrt-SDK-brcmxx-for-Linux-x_-gcc-4.3.3+cs_uClibc-0.9..1.tar.bz2

       å¯ä»¥ä»Žåç§°ä¸Šçœ‹å‡ºï¼Œtarget system是brcmxx,host system是Linux-x_,使用的编译工具以及库是4.3.3+cs_uClibc-0.9..1。

       ã€€ã€€ï¼ˆ4)md5sums 文件: 这个文件记录了所有我们编译好的文件的MD5值,来保证文件的完整性。因为文件的不完整,很容易将路由器变成“砖头”。

       ã€€ã€€éœ€è¦ä¸»è¦çš„是,编译完成后,一定要将编译好的bin目录进行备份(如果里面东西对你很重要的话),因为在下次编译之前,执行make clean 会将bin目录下的所有文件给清除掉!!

       ã€€ã€€2、 更改原有packages

       ã€€ã€€åœ¨ç¼–译根目录下会有一个dl的目录,这个目录其实是“download”的简写,在编译前期,需要从网络下载的数据包都会放在这个目录下,这些软件包的一个特点就是,会自动安装在所编译的固件中,也就是我们make menuconfig的时候,为固件配置的一些软件包。如果我们需要更改这些源码包,只需要将更改好的源码包打包成相同的名字放在这个目录下,然后开始编译即可。编译时,会将软件包解压到build_dir目录下。

       å½“然,你也可以自己在dl里面创建自己的软件包,然后更改相关的配置文件,让openwrt可以识别这个文件包。

       ã€€ã€€ç”±äºŽæˆ‘的项目更改的内容是底层的,需要跟固件一起安装。所以,我使用的方法就是直接更改dl目录下软件包,然后重新进行固件编译。感觉类似于Linux的内核编译。反复编过十多次,没有任何问题。

       ã€€ã€€3、 新建自己的packages

       å¯¹äºŽè‡ªå·±æ–°å»ºçš„package,而这个package又不需要随固件一起安装,换句话说,就是可以当做一个可选软件包的话。我们可以利用我们的SDK环境来单独编译,编译后会生成一个ipk的文件包。然后利用 opkg install xxx.ipk 来安装这个软件。

       ã€€ã€€ä¸‹é¢å…·ä½“说下,如何编译一个helloword的软件包。

       ï¼ˆ1)首先,编写helloworld程序 

       ç¼–写helloworld.c 

       /