刚开始学习这方面,因为是新手,对于Makefile的编写很头痛,所以想使用eclipse来开发,省去了自己写这个文件的过程。参考https://blog.csdn.net/x13163303344/article/details/72848808和https://blog.csdn.net/haifengid/article/details/51778114两位的经验,整理了自己的安装过程。
1.按说明安装eclipse c/c++
完成并重新启动Eclipse,我安装的Indigo版本,用的vmware是12,ubuntu 12 .04.
Create a new project: Menu → File → New C++ Project ( resp. Cproject).
创建新工程:Menu → File → New C++ Project ( resp. Cproject).
注意上面的选项!
然后next才会现要的界面
注意下上面箭头为位置"-"
我的编译器位置,自己按照的openwrt的位置,自己填写好,下面这个是我的
/staging_dir/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2
然后next最后finish
完毕,写代码编译,就会什么运行文件了,放到openwrt设备上就可以运行了
2. 编译目标板文件,
安装openssh-sftp-server和 gdbserver,在make menuconfig中的 development和network->ssh中,勾选相应的选项,如下图示,然后 make V=s,再从中复制出相应的ipk文件到目标板,opkg install安装即可。
3.Remote Target Setup 远程目标设置
程序编译成功后,必须安装到目标设备上去运行。
Eclipse中有一个很好的功能:Menu → Window → Show View → Remote
创建一个新的连接在两个系统(PC和目标设备)之间:
选择Linux
输入目标设备IP地址,主机名,并在下一个页面中选择 .ssh files。
选择processes.shell.linux
选择ssh.shells
完成了!但是这里一定要注意虚拟机和目标机是否在同一网段内,如果不是,要在vmware中修改网络设置,
输入用户名和密码,即目标机系统中的用户名和密码,然后就可以向目标设备中拖拽文件,甚至还能控制目标设备上的进程,我使用的是这种方法,很方便。
另一种方法,可以在eclipse中选择ssh终端,使用这个终端上传并在目标设备中运行HelloOpenWrt二进制文件。
4.Remote gdb Debugger Setup远程gdb调试设置
eclipse 需要先安装gdb调试工具,方法如下:
help-->install new software --> search -->GDB,安装包文件
为了在目标设备中实现远程调试,我们需要对调试设置进行配置,点击debug as按钮选择“Debug Configurations”。
新建一个C/C++Remote Application Debug Configuration
在Main选项卡中的C/C++ Application中输入本地文件路径,切记一定要是绝对路径
在Connection中选在前面设置的远程连接(可参考第二章远程目标设置)
别忘了定义正确的远程文件的绝对路径。
现在就可以点击Debugger设置主机的gdb文件了。
5.目标特定主机的gdb
关于目标设备的gdb,不能使用/usr/bin/gdb(Ubuntu中提供的那样),必须使用我们通过交叉编译工具链创建的gdb。除了gdb以外, tool command prefix的地址也依赖于特定的目标系统设置和再次评估。
我用的是,
/home/lei/openwrt_CC_mt76xx_zhuotk_source/staging_dir/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/bin/mipsel-openwrt-linux-gdb;还可以使用building文件夹下的,/build_dir/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/gdb-linaro-7.6-2013.05/gdb/gdb,两个都可以实现功能 ,不过感觉前一个经常出错连不上,后一个好一点。
可以进行调试,但是出现了,Remote 'g' packet reply is too long的错误。
在网上找了下大家的解决办法,参考了https://blog.csdn.net/manfeel/article/details/38755693的方法,
修改gdb/remote.c文件,我修改了两个地方的remote.c文件,到底是哪一个起作用不确定,也不想再重新试了,哪位有兴趣可以试下,一个是在/build_dir/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/gdb-linaro-7.6-2013.05/gdb中,另外一个是在build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/gdb-7.8/gdb中,把remote.c文件的这个地方修改如下。
static void process_g_packet (struct regcache *regcache)函数,,屏蔽对buf_len的判断。
然后我是切换到build_dir/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/gdb-linaro-7.6-2013.05/gdb目录下,执行make和make install,这一步很重要,不执行的话还是进行不下去。
然后远程debug就可以用了,如下图示