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路由器了。

致谢

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

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

相关推荐
知行电子-12 小时前
Proteus中数码管动态扫描显示不全(已解决)
单片机·proteus·嵌入式
Tfly__3 天前
Ubuntu 20.04 安装 QGC v4.3 开发环境
linux·c++·qt·ubuntu·github·嵌入式·无人机
憧憬一下4 天前
Linux 内核中断描述符 (irq_desc) 的初始化与动态分配机制详解
arm开发·嵌入式硬件·嵌入式·c/c++·linux驱动开发
源码超级联盟6 天前
51单片机和stm32单片机区别
单片机·嵌入式
jjyangyou7 天前
物联网核心安全系列——物联网安全需求
物联网·算法·安全·嵌入式·产品经理·硬件·产品设计
憧憬一下7 天前
Pinctrl子系统中Pincontroller和client驱动程序的编写
arm开发·嵌入式·c/c++·linux驱动开发
蓝天居士7 天前
ES8388 —— 带耳机放大器的低功耗立体声音频编解码器(4)
嵌入式·音频·es8388
田三番7 天前
使用 vscode 简单配置 ESP32 连接 Wi-Fi 每日定时发送 HTTP 和 HTTPS 请求
单片机·物联网·http·https·嵌入式·esp32·sntp
启明智显8 天前
AI笔筒操作说明及应用场景
人工智能·嵌入式硬件·嵌入式·ai大模型·启明智显·esp32-s3
FreakStudio8 天前
全网最适合入门的面向对象编程教程:58 Python字符串与序列化-序列化Web对象的定义与实现
python·单片机·嵌入式·面向对象·电子diy