OpenWrt-Eclipse环境搭建

开发环境

yaml 复制代码
Debian 10.3
Eclipse 2023
OpenWrt 22.03.5
MT7620

环境搭建参考了一个非常稳定的Docker构建项目:docker-openwrt-build-env ,它帮助我太多,真的感谢。

下面给出软件来源

Eclipse安装插件

按照官网教程《Using Eclipse for C/C++ Programming and Debugging》 ,我们需要首先安装插件,插件就是如下四个:

sql 复制代码
C/C++ Remote Launch Developer Resources
Remote System Explorer End-User Runtime
Remote Launch Targets Developer Resources
Terminal (Console) View Developer Resources

安装方式为 Help->Install New Software... ,在逐个搜索时注意两个地方:一是站点选全部,二是去掉对于 Contact all update sites during install to find required software 的勾选。

下载 OpenWrt

这一部分对于新手和老手来说都不难,我简要介绍一下。在下载源码之前,我们先安装一些必要的包到 Debian 上面:

shell 复制代码
sudo apt-get update
sudo apt-get install -y time git-core subversion build-essential g++ bash make libssl-dev patch libncurses5 libncurses5-dev zlib1g-dev gawk flex gettext wget unzip xz-utils python python-distutils-extra python3 python3-distutils-extra python3-setuptools swig rsync curl libsnmp-dev liblzma-dev libpam0g-dev cpio rsync gcc-multilib
apt-get clean

好,现在我们可以下载OpenWrt的源码了,这里我们选一个稳定的版本:

shell 复制代码
git clone --branch v22.03.5 https://git.openwrt.org/openwrt/openwrt.git

然后我们就可以执行官方推荐的 feeds 安装操作:

shell 复制代码
cd openwrt
./scripts/feeds update -a
./scripts/feeds install -a

这一步需要注意的是,有可能 feeds updatefeeds install 单次执行不完全成功,记得多执行几次,看到比较稳定的输出了,再继续编译。

首次编译 OpenWrt

首次编译 OpenWrt 时,我们只需要确定到板子的型号即可,不需要勾选各种其它组件。

我们执行命令:

go 复制代码
make menuconfig

在交互界面中,我们只需要配置:

  • Target System
  • Subtarget
  • Target Profile

其它的都不需要,然后我们就按照提示,按两次ESC,然后YES,保存退出,并执行编译指令:

ini 复制代码
make V=99

添加 OpenWrt 开发所需组件

大家可以根据自身情况酌情添加如下组件:

C或C++开发

如果进行 C++ 开发,至少勾选上 libstdcpp ,我们有太多内容依赖它。

LuCI

一个良好的交互界面肯定是需要的,这里我建议 built-in

  • LuCI -> Collections -> luci

SFTP

传输文件是很难避免的事情,这里我建议 built-in

  • Network -> SSH -> openssh-sftp-server
  • File Transfer -> vsftpd

这里说一句题外话,大家不必按上下左右键去找,直接看界面里蓝色的字母,比如 SSH ,按下S就过去了。

gdbserver

调试程序的时候,是需要在 OpenWrt路由器 上启动一个 gdbserver 程序的,所以我推荐 built-in

  • Development -> gdbserver

以上所有配置完毕后,执行

ini 复制代码
make -j4 V=99

bin固件误区提醒

然后我们就编译成功了,这里有一个误区啊,就是到底选择什么bin文件。一般情况,你会看到两类bin文件,一种是以-initramfs-kernel 结尾,另一种是以 -squashfs-sysupgrade 结尾的。请选择后一种,因为前者是无法保存配置的,听网友们介绍是一种临时文件。

Eclipse 创建C++项目

按照官方教程,我们需要创建 C++ Managed Build 项目:

由于我们是交叉编译,肯定是选择 Cross GCC ,为了方便打出你好世界,我们左边也是选到 Hello World C++ Project

一直下一步到这个交叉编译前缀和路径的配置界面,这里有需要注意的地方:

Eclipse 远程调试

此时我们通过 Eclipse 的 Debug 的 Debug Configurations 新建一个 C/C++ Remote Spplication ,在这里,我们强调几个爱出错的地方:

1. C/C++ Application 选到可执行文件

一般来讲,这一栏可以直接生成,如果没有选上也无法找到 Debug 目录下有文件,请检查自己是否编译了项目。编译非常简单,就是点击一下左上角的锤子按钮。

2. Connection 要使用 SSH

这里官方也是推荐使用SSH,不推荐用串口,因为你终有一天会使用云服务器编译它,你咋加串口?

3. Remote Absolute File Path for C/C++ Application 必须写绝对路径

4. GDB debugger 必须使用 OpenWrt 提供的

这一块选择的gdb就是官方推荐的,它的路径类似于:openwrt/staging_dir/toolchain-mipsel_24kc_gcc-11.2.0_musl/bin/mipsel-openwrt-linux-musl-gdb

5.网络问题

如果你遇到了一些网络问题,请不要着急,积极探索 OpenWrt 路由器的界面的网络配置。再有就是在eclipse中,可以 File -> New -> Other -> Remote System Explore -> Connection 选择连接 Linux ,查看Eclipse是否已经能正常连接OpenWrt路由器了。

致谢

最后,感谢探索过程中遇到的所有乐于助人的网友们,你们才是最棒的。

包括但不仅限于如下列表:

相关推荐
展信佳_daydayup2 小时前
03 基础篇-润和开发板连接过程
linux·开源·嵌入式
DIY机器人工房1 天前
QT代码框架小案例:一个简单的时间类(Time)及其实例化程序,模拟了时间的设置、显示和自动流逝功能,类似一个简易电子时钟。
stm32·单片机·嵌入式硬件·嵌入式·diy机器人工房
飞凌嵌入式1 天前
高性能、高实时、高安全:如何在飞凌嵌入式i.MX95xx核心板上同时实现?
嵌入式硬件·安全·嵌入式·飞凌嵌入式
Jason_zhao_MR1 天前
RK3576赋能无人机巡检:多路视频+AI识别引领智能化变革
人工智能·音视频·嵌入式·无人机
吃货界的硬件攻城狮2 天前
单片机通信协议核心关系梳理笔记(UART/USART/232/485/SPI/12C/LIN/BLE/WIFI)
嵌入式·通信协议
正点原子3 天前
《ESP32-S3使用指南—IDF版 V1.6》第三十四章 RGB触摸实验
单片机·物联网·嵌入式
FreakStudio3 天前
一文速通 Python 并行计算:教程总结
python·pycharm·嵌入式·面向对象·并行计算
酷飞飞4 天前
STC8单片机驱动I2C屏幕:实现时间、日期与温湿度显示
单片机·嵌入式硬件·51单片机·嵌入式
西工程小巴5 天前
实践笔记-VSCode与IDE同步问题解决指南;程序总是进入中断服务程序。
c语言·算法·嵌入式
闻道且行之6 天前
嵌入式|VNC实现开发板远程Debian桌面
运维·debian·嵌入式