CentOS_7 OpenWrt Eclipse 环境搭建与 Dr.com 开发笔记
一:内核的编译.
1,linux 编译环境的搭建与源码的准备工作
2,常用软件的安装 (make menuconfig)
3, 针对TP-Link WR740N 一些软件的openwrt 的移植
4,内核的编译
二:OpenWrt Eclipse 编译环境的搭建
1,OpenWrt 平台依赖包的安装
2,Eclipse 环境的配置
3, 远程调试设置
三:OpenWrt 上 dr.com移动的编写与移植
1,源码的分析
2,源码的移植
3,功能的实现
4,程序的运行与安装
四,参考
一:1,编译环境的搭建与源码的准备工作
内核的编译需要在linux环境下进行,所以预先安装该系统.针对CentOS需要预先安装相应的依赖包.
yum install subversion binutils bzip2 gcc gcc-c++ gawk gettext flex ncurses-devel zlib-devel make patch unzip perl-ExtUtils-MakeMaker glibc glibc-devel glibc-static
quilt ncurses-lib sed sdcc intltool sharutils bison wget git-core openssl-devel xz
通过git获取源码,源码的地址可以GOOGLE搜索自己需要的版本.源码从这里下载 https://downloads.openwrt.org/
git clone git://git.openwrt.org/14.07/openwrt.git
进入源码目录并下载相关软件包
cd openwrt
./scripts/feeds update -a
./scripts/feeds install -a
2,常用软件的安装 (make menuconfig)
linux 内核的配置相对比较人性化,使用make menuconfig大大简化了操作.
make defconfig
make prereq
make menuconfig
具体软件的选择可以参考这里 http://www.right.com.cn/forum/thread-83746-1-1.html,不再做多于介绍.如果不想添加什么软件,可以简单做以下修改:
Target Systme---> 修改为自己的平台cpu型号
Target Profile --->修改为自己的型号,我的是TP-LINK WR740N
Target Images ---> suashfs --->
LuCI ---> Collection ---> luci
LuCI---> Applications--->luci-app-samba
完成之后退出保存即可.
3,针对TP-Link WR740N 一些软件的openwrt 的移植
对于国内的型号和国内的型号略有不同,所以原源码的端口部分需要做简单修改.
(1)解决WAN 口在 LAN4位置的错误.找到文件mach-tl-wr741nd-v4.c,在目录(你源码的目录)/target/linux/ar71xx/files/arch/mips/ath79/下,将代码 ath79_setup_ar933x_phy4_switch(true, true); 改为ath79_setup_ar933x_phy4_switch(false, false);或者直接删掉.
(2)解决灯位置不对的问题.LAN4 的灯在 WAN的位置,只需要修改上面文件的宏定义部分,将TL_WR741NDV4_GPIO_LED_WAN 修改为 17, TL_WR741NDV4_GPIO_LED_LAN4 修改为13即可.
(3)打开wifi 开关, package/kernel/mac80211/files/lib/wifi/mac80211.sh 看到 REMOVE THIS LINE TO ENABLE WIFI ,所以需要注释掉下面的一行代码便可以使能WIFI了.
(4)修改flash 大小.修改 ./tools/firmware-utils/src/mktplinkfw.c 将WR740对应的关联字段 "4" 和 "4m" 改成 "8" 和"8M".
修改 ./target/linux/ar71xx/image/Makefile, 把740nd最后的4Mlzma改成了8Mlzma或16Mlzma .
4,内核的编译
内核编译过程中需要联网,会下载大量的编译依赖包,部分URL会下载不了,可以到这里下载http://dl.zjuqsc.com/router/openwrt/dl/ 放到源码目录下 ./dl 目录即可.
使用这个命令进行编译 make -j5 V=99 2>&1 |tee build.log |grep -i error ,日志会在当前 源码目录,对于第一次编译最好不使用 -j 参数,便于出错时会错误查找.内核的编译大概需要几个小时,依机器和网络环境.
二:1,OpenWrt 平台依赖包的安装
为了实现openwrt的在线调试,openwrt端需要安装一些 ipk包,可以到这里下载(https://downloads.openwrt.org/)根据自己对应版本下载相应的包,需要下载的包如下:
(1),DropBear or OpenSSH installed & connections can be established
(2),libstdcpp (optional for C++)
(3),openssh-sftp-server
(3),gdbserver
(4),libthread-db
将包下载到拷贝到openwrt的samba服务器的目录(提前搭建好的),然后使用命令 opkg install 你的包.ipk 如果需要什么包下载安装即可,不得不说openwrt依赖包这块做的还是相当不错的.
2,Eclipse 环境的配置
官方有关于Eclipse 相关配置的说明,不过内容过于老旧.到博客时间最新的版本为eclipse-cpp-luna-SR2-linux-gtk-x86_64.tar.gz, 可以从这里下载关解压下载的软件,放到相应的目录.便完成了安装.
最新版本的Eclipse 已经集成了 Crosss Compiler 和 Remote System Explorer的功能.
新建工程 Create a new project: Menu → File → New C++ Project ,一直 next 直到这里,按照你的 CPU添加.
可以新建一个内置的 hello world 工程测试自己配置是否正确,如果正确,编译会是下面这个结果.
23:58:57 **** Rebuild of configuration Debug for project openwrt_test ****
Info: Internal Builder is used for build
mips-openwrt-linux-g++ -O0 -g3 -Wall -c -fmessage-length=0 -o src/openwrt_test.o ../src/openwrt_test.cpp
mips-openwrt-linux-g++ -o openwrt_test src/openwrt_test.o 23:58:59 Build Finished (took 2s.533ms)
3,远程调试设置
打开 Remote System Explorer ,右键Local -->new 出现下面这个对话框,选择 linux.
填写你远程主机的IP地址, connection name可以填写容易区分的名子.
选择 ssh.files.
选择 processes.shell.linux.
选择 ssh.files.
右键你的远程连接,connect,输入密码即可连接. 对于要求设置 storage 的 password 可以不用管,cancel即可.成功连接之后右键 Ssh Terminal-->Launch Terminal 会显示下面这个状态,表示已经连接成功.
下面进行运行,和debug的一些设置. 右键工具栏, Debug-->Debug Configurations.
右键 C/C++ Remote Application--->New . 在Main标签页栏, Connection选择已经建立的那个连接, 并设置Remote Absolute Path for C/C++ Application.(务必不要忘记)
进入 Debugger 标签页,设置你的交叉 gdb 路径 (在你的工具链目录中).
设置完成之后便可以进行在线调试,并会出现下面提示对话框.
最终运行的效果如下图:
三:1,Dr.com 源码分析与重构
Linux版本的Drcom已经完成,在github仓库中有 CentOS x64_86版本和 OpenWrt 版本mips_AR7xxx_AR9xxx ,链接如下:
https://github.com/sunke-github/Drcom8021x_linux
https://github.com/sunke-github/Drcom8021x_Openwrt
具体源码不做详细分析 ,后期将会添加 UML时序图,便于后面想阅读和修改代码的童鞋.
参考:
http://wiki.openwrt.org/doc/howto/buildroot.exigence
https://github.com/coverxit/EasyDrcom
CentOS_7 OpenWrt Eclipse 环境搭建与 Dr.com 开发笔记的更多相关文章
- Java学习不走弯路教程(7.Eclipse环境搭建)
7.Eclipse环境搭建 在前几章,我们熟悉了DOS环境下编译和运行Java程序,对于大规模的程序编写,开发工具是必不可少的.Java的开发工具比较常用的是Eclipse.在接下来的教程中,我们将基 ...
- Eclipse环境搭建并且运行wordcount程序
一.安装Hadoop插件 1. 所需环境 hadoop2.0伪分布式环境平台正常运行 所需压缩包:eclipse-jee-luna-SR2-linux-gtk-x86_64.tar.gz 在Linu ...
- scala 入门Eclipse环境搭建
scala 入门Eclipse环境搭建及第一个入门经典程序HelloWorld IDE选择并下载: scala for eclipse 下载: http://scala-ide.org/downloa ...
- scala 入门Eclipse环境搭建及第一个入门经典程序HelloWorld
scala 入门Eclipse环境搭建及第一个入门经典程序HelloWorld 学习了: http://blog.csdn.net/wangmuming/article/details/3407911 ...
- java eclipse环境搭建环境
开发环境搭建: JDK的安装 http://www.oracle.com/technetwork/java/javase/downloads 下载文件:jdk-8u101-windows-x64.ex ...
- 在Eclipse上搭建Cocos2d-x的Android开发环境
很多其它相关内容请查看本人博客:http://www.bokeyi.com/ll/category/cocos2d-x/ 本文的搭建方法是最新最正确的方法,好多朋友反映搭建eclipse交叉编译环境非 ...
- eclipse环境搭建(插件安装)
转自:http://www.iteye.com/topic/982182 使用eclipse真的有年头了,相信java程序员没有不知道它的,最近在给团队中新来的应届生做指导,专门讲解了一下Eclips ...
- selenium eclipse环境搭建
1.python 3.5下载及安装 2.setuptools 与pip 下载地址是:http://pypi.Python.org/pypi/setuptools http://pypi.Python. ...
- 【SSH】 之 Struts2环境搭建及简单应用开发
在上一篇文章中,我们一起了解了一下struts2的工作机制原理,接下来让我们进行一下简单应用的开发 (一)配置环境 1.建立web项目 2.导入jar包 其中struts2中有很多jar包,我们不需要 ...
随机推荐
- Tarjan算法--强连通分量
tarjan的过程就是dfs过程. 图一般能画成树,树的边有三种类型,树枝边 + 横叉边(两点没有父子关系) + 后向边(两点之间有父子关系): 可以看到只有后向边能构成环,即只有第三张图是强连通分量 ...
- W3C代码标准规范
一.目的: 为什么要遵循标准我们作为生产者实际上只是位于中游,既不是上游的浏览器制造商,他们是标准的真正制定者,也不算是下游,他们是浏览器的终端使用者.这个角色就意味着我们位于一个接口的位置,我们需要 ...
- Hadoop是什么?一句话理解
Hadoop(MapReduce&HDFS) 1.学习目的(前言) 在从业了六年IT生涯里,做个实施顾问.业务顾问.BA需求分析师.项目经理,现在重新定位自己,在新公司做起了开发顾问,虽然经历 ...
- Hibernate save, saveOrUpdate, persist, merge, update 区别
Hibernate Save hibernate save()方法能够保存实体到数据库,正如方法名称save这个单词所表明的意思.我们能够在事务之外调用这个方法,这也是我不喜欢使用这个方法保存数据的原 ...
- js操作做GridView
一:获取当前选中行的数据 function fun_selectedInfo() { //获取当前鼠标选中元素 var e=event.srcElement; //获取当前元素所在行号 var row ...
- Servlet-RequestDispatcher.forward方法
forward方法与Include方法非常相似,但有5点不同 1,在调用forward方法之前,输出缓冲区的数据会被清空,也就是说,在使用forward方法进行请求转发时,只可能输出别转发的web资源 ...
- Oracle执行时间与sql格式
今天碰到一个很奇怪的问题,直接在eclipse中将sql拷出,然后直接粘贴复制在数据库中就会执行的非常慢,但是在利用plsql对sql语句进行格式整理之后,执行的速度就非常的快,之后我where条件中 ...
- 关于CSS初步入门简述1
关于CSS的简介可以自行百度,本篇只考虑内容 首先关于CSS会由浅入深,写在前面的有很多不严谨,只是为了引出后文所写.不过如果谬误较大,敬请指正! 1.大部分的代码要写在之中 简单的例子: <b ...
- 《C专家编程》第三章——分析C语言的声明
前面一章我们已经说过C语言存在的一些问题和它晦涩的地方,让我们对这门神奇的语言有了更深的了解.现在这一章则集中精力来讨论C语言的声明,分为三块,首先是说明C语言声明晦涩难懂的原因和声明是如何形成的,其 ...
- JSON.parse() 和 JSON.stringify()
JSON.parse()和JSON.stringify() 1.parse 用于从一个字符串中解析出json 对象.例如 var str='{"name":"cpf& ...