ImageVerifierCode 换一换
格式:DOC , 页数:12 ,大小:173KB ,
资源ID:4204453      下载积分:20 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-4204453.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(如何在OpenWRT环境下做开发.doc)为本站会员(hw****26)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

如何在OpenWRT环境下做开发.doc

1、如何在 OpenWRT 环境下做开发 2011-05-05 17:31 之前写过一篇日志,是关于如何搭建自己的 OpenWRT 开发环境。经过最近一段时间的开发 学习和实践,对 OpenWRT 环境的开发有了一定的了解。在这里将我的开发心得做个整理。 1、搭建开发环境 首先,我们需要一个为路由器定制的开发环境,具体可以参考我的另一篇日志:搭建自 己的 OpenWrt 开发环境。这里只做一个简单的补充,在执行 make menuconfig 后,会出 现下图: 其中,图中红框部分是我定制路由器的系统版本,大家可以根据不同的路由器进行不同的 选择;绿框部分表示我们需要编译一个 SDK 开发环境(默

2、认情况下,此项未勾选)。 编译过程中需要通过官网下载很多相关的软件包,所以必须保证能够顺利连上外网。由于 下载速度的限制,编译过程大概需要数小时。编译结束后,所有的产品都会放在编译根目 录下的 bin/yourtarget/. 例如:我所编译的产物都放在./bin/brcm47xx/下,其中文件主 要有几类: (1).bin/.trx 文件: 这些都是在我们所选的 target-system 的类别之下,针对不同路由 器型号、版本编译的路由器固件。这些不同路由器的型号和版本是 openwrt 预先设置好的, 我们不需要更改。至于.bin 和.trx 的区别,一种说法是,第一次刷路由器的时候,需

3、要用. bin 文件,如果需要再升级,则不能再使用.bin 文件,而需要用.trx 文件。原因是,.bin 是将路由器的相关配置信息和.trx 封装在一起而生成的封包,也就是说是包含路由器版本 信息的.trx。在第一次刷固件的时候,我们需要提供这样的信息,而在后续升级时,则不 再需要,用.trx 文件即可。 (2)packages 文件夹: 里面包含了我们在配置文件里设定的所有编译好的软件包。默认 情况下,会有默认选择的软件包。 (3)OpenWrt-SDK.*.tar.bz2: 这个也就是我们定制编译好的 OpenWRT SDK 环境。我们 将用这个来进行 OpenWrt 软件包的开发。例如

4、,我所编译好的 SDK 环境包为: /bin/brcm47xx/OpenWrt-SDK-brcm47xx-for-Linux-x86_64-gcc-4.3.3+cs_uClibc- 0.9.30.1.tar.bz2 可以从名称上看出,target system 是 brcm47xx,host system 是 Linux-x86_64,使用的 编译工具以及库是 4.3.3+cs_uClibc-0.9.30.1。 (4)md5sums 文件: 这个文件记录了所有我们编译好的文件的 MD5 值,来保证文件的完整 性。因为文件的不完整,很容易将路由器变成“砖头”。 需要主要的是,编译完成后,一定要将

5、编译好的 bin 目录进行备份(如果里面东西对你很 重要的话),因为在下次编译之前,执行 make clean 会将 bin 目录下的所有文件给清除 掉! 2、 更改原有 packages 在编译根目录下会有一个 dl 的目录,这个目录其实是“download”的简写,在编译前期, 需要从网络下载的数据包都会放在这个目录下,这些软件包的一个特点就是,会自动安装 在所编译的固件中,也就是我们 make menuconfig 的时候,为固件配置的一些软件包。如 果我们需要更改这些源码包,只需要将更改好的源码包打包成相同的名字放在这个目录下, 然后开始编译即可。编译时,会将软件包解压到 build_

6、dir 目录下。 当然,你也可以自己在 dl 里面创建自己的软件包,然后更改相关的配置文件,让 openwrt 可以识别这个文件包。 由于我的项目更改的内容是底层的,需要跟固件一起安装。所以,我使用的方法就是直接 更改 dl 目录下软件包,然后重新进行固件编译。感觉类似于 Linux 的内核编译。反复编过 十多次,没有任何问题。 3、 新建自己的 packages 对于自己新建的 package,而这个 package 又不需要随固件一起安装,换句话说,就是可 以当做一个可选软件包的话。我们可以利用我们的 SDK 环境来单独编译,编译后会生成一 个 ipk 的文件包。然后利用 opkg ins

7、tall xxx.ipk 来安装这个软件。 下面具体说下,如何编译一个 helloword 的软件包。 (1)首先,编写 helloworld 程序 编写 helloworld.c /* * Helloworld.c * The most simplistic C program ever written. * An epileptic monkey on crack could write this code. */ #include #include int main(void) printf(“Hell! O world, why wont my code compile?nn“); r

8、eturn 0; 编写 Makefile 文件 # build helloworld executable when user executes “make“ helloworld: helloworld.o $(CC) $(LDFLAGS) helloworld.o -o helloworld helloworld.o: helloworld.c $(CC) $(CFLAGS) -c helloworld.c # remove object files and executable when user executes “make clean“ clean: rm *.o helloworl

9、d 在这两个文件的目录下,执行 make 应该可以生成 helloworld 的可执行文件。执行 helloworld 后,能够打印出“Hell! O world, why wont my code compile?”。 这一 步,主要保证我们的源程序是可以正常编译的。下面我们将其移植到 OpenWRT 上。 (2)将 OpenWrt-SDK-brcm47xx-for-Linux-x86_64-gcc-4.3.3+cs_uClibc- 0.9.30.1.tar.bz2 解压 tar xvf OpenWrt-SDK-brcm47xx-for-Linux-x86_64-gcc-4.3.3+cs_u

10、Clibc- 0.9.30.1.tar.bz2 (3)进入 SDK cd OpenWrt-SDK-brcm47xx-for-Linux-x86_64-gcc-4.3.3+cs_uClibc-0.9.30.1 可以看到里面的目录结构跟我们之前 source 的目录结构基本相同,所需要编译的软件包, 需要放置在 package 目录下 (4)在 package 目录下创建 helloworld 目录 cd package mkdir helloworld cd helloworld (5)创建 src 目录,拷贝 helloworld 文件 mkdir src cp /home/wrt/test/

11、helloworld.c src cp /home/wrt/test/Makefile src (6)在 helloworld 目录下创建 Makefile 文件 这个 Makefile 文件是给 OpenWRT 读的,而之前写的那个 Makefile 文件是针对 helloworld 给编译其读的。两个 Makefile 不在同一层目录下。 touch Makefile vim Makefile Makefile 文件模板内容如下: # # OpenWrt Makefile for helloworld program # # # Most of the variables used her

12、e are defined in # the include directives below. We just need to # specify a basic description of the package, # where to build our program, where to find # the source files, and where to install the # compiled program on the router. # # Be very careful of spacing in this file. # Indents should be t

13、abs, not spaces, and # there should be no trailing whitespace in # lines that are not commented. # # include $(TOPDIR)/rules.mk # Name and release number of this package PKG_NAME:=helloworld PKG_RELEASE:=1 # This specifies the directory where were going to build the program. # The root build directo

14、ry, $(BUILD_DIR), is by default the build_mipsel # directory in your OpenWrt SDK directory PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME) include $(INCLUDE_DIR)/package.mk # Specify package information for this program. # The variables defined here should be self explanatory. # If you are running Kamikaz

15、e, delete the DESCRIPTION # variable below and uncomment the Kamikaze define # directive for the description below define Package/helloworld SECTION:=utils CATEGORY:=Utilities TITLE:=Helloworld - prints a snarky message endef # Uncomment portion below for Kamikaze and delete DESCRIPTION variable abo

16、ve define Package/helloworld/description If you cant figure out what this program does, youre probably brain-dead and need immediate medical attention. endef # Specify what needs to be done to prepare for building the package. # In our case, we need to copy the source files to the build directory. #

17、 This is NOT the default. The default uses the PKG_SOURCE_URL and the # PKG_SOURCE which is not defined here to download the source from the web. # In order to just build a simple program that we have just written, it is # much easier to do it this way. define Build/Prepare mkdir -p $(PKG_BUILD_DIR)

18、 $(CP) ./src/* $(PKG_BUILD_DIR)/ endef # We do not need to define Build/Configure or Build/Compile directives # The defaults are appropriate for compiling a simple program such as this one # Specify where and how to install the program. Since we only have one file, # the helloworld executable, insta

19、ll it by copying it to the /bin directory on # the router. The $(1) variable represents the root directory on the router running # OpenWrt. The $(INSTALL_DIR) variable contains a command to prepare the install # directory if it does not already exist. Likewise $(INSTALL_BIN) contains the # command t

20、o copy the binary file from its current location (in our case the build # directory) to the install directory. define Package/helloworld/install $(INSTALL_DIR) $(1)/bin $(INSTALL_BIN) $(PKG_BUILD_DIR)/helloworld $(1)/bin/ endef # This line executes the necessary commands to compile our program. # Th

21、e above define directives specify all the information needed, but this # line calls BuildPackage which in turn actually uses this information to # build a package. $(eval $(call BuildPackage,helloworld) (7)返回到 SDK 的根目录 执行 make 进行编译 编译过程会在 build_dir 目录下完成 编译结果会放在 bin/yourtarget/package 目录下 helloworld

22、_1_bcm47xx.ipk (8)上传 helloworld_1_bcm47xx.ipk 使用 sftp 软件上传 helloworld_1_bcm47xx.ipk 至路由器 执行 opkg install helloworld_1_bcm47xx.ipk 输入 hello 然后按 Tab 键,发现 openwrt 中已经有 helloworld 可执行命令。 执行 helloworld 查看程序的效果。 Hell! O world, why wont my code compile? 无线路由开发平台 openwrt 的编译和使用 2010-12-30 20:19:19 标签: 无线路由器

23、 openwrt 内核编译 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究 法律责任。 学期末的课程设计出了个题:无线路由器的软件开发。 平台就是 openwrt。openwrt 是由 Cisco 放出源代码的开放无线路由平台。由于是基于 linux 内核,所以可以将很多 linux 平台下的软件移植到此平台下,然后让无线路由拥有很多意 想不到的功能,例如拿来做 BT 下载器,音乐播放器,小型数据库处理等等。 环境: Ubuntu 10.04,subversion,VMware workstation 7.1.3 首先是得到 openwrt 的源

24、代码。 在 Ubuntu 下,首先安装上 svn 工具: sudo apt-get install subversion 然后装上各种依赖关系包: sudo apt-get install gcc g+ binutils patch bzip2 flex bison make autoconf gettext texinfo unzip sharutils subversi-dev ncurses-term zlib1g-dev sudo apt-get update 然后进入 home 目录,建立文件夹: makedir /openwrt cd /openwrt 然后使用 svn 命令行 c

25、heckout 出源代码: svn checkout svn:/svn.openwrt.org/openwrt/trunk 进入 trunk 文件夹: cd trunk 更新 openwrt: ./scripts/feeds update -a 安装所有包: ./scripts/feeds install -a 这个时候,我觉得有必要把 LUCI 编译进内核,这样就方便以后我们通过 web 来控制 openwrt,而不是通过命令行来控制了。所以加上以下命令: ./scripts/feeds update packages luci ./scripts/feeds install -a -p l

26、uci 这样之后,在编译内核时才会出现 LUci 选项。 由于我没有 Linksys 系列的路由器,而且只是为了体验 openwrt,所以我就把 openwrt 编译 成 VMware workstation 的磁盘镜像,使用 VMware workstation 来模拟一台路由的硬件环境。 以下为符合此情况的配置:(由于编译时会继续从网络上下载相应的包,所以一旦开始编 译,就不要断开连接。但是遇到很大的包,但是下的很慢的,可以中断过程,使用下载过 程去相应的网站上下载之后放入) 首先输入 make menuconfig,开始进入内核配置界面: 1. Target System (x86) -

27、 (X) x86 2. 配目标文件系统为 EXT2 Target Images - * ext2 Target Images - * Build VMware image files (VMDK) 这样就后面编译时产生可以直接在 VM 上用的虚拟硬盘。 配 Web UI : 1) Base system - uci Utility for the Unified Configuration Interfa 2) LuCI 都选上 3) Network - uhttpd uHTTPd - tiny, single threaded HTTP server - uhttpd-mod-lua. uH

28、TTPd - tiny, single threaded HTTP server (Lua plugin) 4) make V=99 编译,时间有点长,完后,在 bin/x86/ 就是最后编译出来的文件了。 5) 拷贝 bin/x86/ ,我的全部路径是 /home/longjindong/openwrt/trunk/bin/x86/ 中的 “openwrt-x86-genericcombined-ext2.vmdk”到 XP 电脑上; XP VM 安装运行 OpenWRT: 1. 创建一个虚拟机 打开 VMware New Virtual Machine . 下一步 下一步 linux 、O

29、ther Linux 2.6.x kernel - 下一步 这里 Vm 名和路径可以自己指定 下一步 网络默认“Use bridged networking” 下一步 这 里的硬盘大小用默认,反证一会要被删掉 完成;这样在 VMware Workstatio 里有 “Other Linux 2.6.x kernel”的虚 拟机了。 2. 加载 OpenWRT 虚拟盘并启动 1) 删创建虚拟机时的虚拟盘 右击 “Other Linux 2.6.x kernel” - Setting Hard Disk Remoe; 2) 加载 OpenWRT 虚拟盘 “Other Linux 2.6.x kernel” - Settin Add Hard Disk Next Use an existing virtual disk - Browse ,选前面 “openwrt-x86-generic-combined-ext2.vmdk” Finish. 3) 点 run 按钮就可以开始运行 OpenWRT。 上图: 输入 192.168.1.1,就可以在浏览器里看见: 这只是编译内核部分,以后把相关的设置和软件开发方面慢慢写出来吧。

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。