关于如何使用OPENWRT SDK来编译自己的程序,网上有大把的文章可供参考,但如果你要开发并调试自己的c/c++程序,如何按这些方法来做,效率未免低了一点。
对makefile不是很熟的c/c++开发人员,总是依赖于IDE环境为我们自动生成,比如我。下面给大家介绍一种利用eclipse的IDE环境编译调试openwrt下的c/c++程序的方法。
我喜欢使用CentOS6.8_X86, 主要是选择“开发工作站“安装后, gcc是现成的,eclipse 加c/c++所需插件都装现成的,直接就可以进入c程序开发。遗憾的是, gcc和eclipse版本低了点,不过能用就好。
利用eclipse配置openwrt的交叉编译环境,可以里利用eclipse CDT插件为我们自动产生makefile文件,我们不用操心makefile的编写,专注于程序开发。 我们唯一需要做的就是配置交叉编译环境。
在 菜鸟视角的openwrt(二), 我们通过编译OPENWRT固件, 已经编译好了MT7628的交叉编译工具链,可以按照openwrt的软件包makefile制作规范,添加并编译自己开发的应用程序。
不过在程序开发阶段, 使用本文介绍的方法,会帮你节省不少调试时间,下面是IDE开发环境的配置:
1) 使用eclipse工程向导,生成一个c++ project(不要使用c project, 原因后面叙述)
File -> new -> c++ project ->可执行文件->Cross-compile Project (注意选择交叉编译工程)
工程向导会提示你输入交叉编译工具链的 前缀和路径:
MT7628用的是: mipsel-openwrt-linux-
我机器上的路径是: /home/MT7628/YDH/staging_dir/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2
注意不是bin目录: /home/MT7628/YDH/staging_dir/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/bin
点击下一步, 点击按钮“高级设置”
i) 弹出对话框中,配置Cross-G++ Linker, 把g++改成gcc
当然可以不改, 但不改的话,编译出来的程序需要stdc++库的支持, 你的openwrt需要安装stdc++库。
如果你本身就是c++的代码, 那就更不能改了。
ii) 弹出对话框中,配置Cross-Gcc compile
配置openwrt SDK的c代码include目录, 这个都懂吧
iii) 弹出对话框中,配置Cross-Gcc++ compile
配置openwrt SDK的c++代码include目录, 这个都懂吧2) 配置环境变量
OPENWRT 交叉编译器编译时, 需要环境变量: STAGING_DIR
eslipse在工程属性中, C/C++构建, 环境变量下, 添加该环境变量, 值为/home/MT7628/YDH/staging_dir, 指向Openwrt SDK的/staging_dir目录
3) 剩下的就是在工程中建立源文件夹, 添加自己的头文件,C源文件了
完了就直接编译就可以了。
4) 在开发板上运行编译好的程序
编译好的程序必须在openwrt环境下才能运行, 所以要调试程序的话,需要把程序放到板子上去跑。
CentOS开发工作站安装后,已经安装好了apache服务, 开发版可以通过http从开发主机下载编译号的程序
为了使编译好的程序自动copy到www服务的站点下, 你可以在eclipse工程属性的构建步骤->构建后步骤中中设置一条copy命令,把编译好的文件copy到/var/www/html下
我的命令:cp /root/workspace/mtkSpeaker/Release/mtkSpeaker /var/www/html/mtkSpeaker
使用ssh -l root xxx.xxx.xxx.xxx 连接到开发板, xxx.xxx.xxx.xxx是开发板IP地址
登录后, 使用命令 :
cd /tmp //tmp目录位于内存中, 掉电就丢失, 但是速度快啊, 不伤FLASH,本来就是调试嘛
wget yyy.yyy.yyy.yyy/mtkSpeaker //yyy.yyy.yyy.yyy是开发主机地址
chmod U+X mtkSpeaker
./mtkSpeaker
就可以完成程序的下载和运行了, 你可以直接编个shell脚本来执行这个过程
这个比较强悍: https://blog.csdn.net/haifengid/article/details/51778114
有时间去试试!