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

致谢

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

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

相关推荐
四格17 小时前
如何使用 Bittly 根据业务流程自动发送串口指令
物联网·嵌入式
fanged1 天前
裸机编一个Hello World!(TODO)
嵌入式
FreakStudio1 天前
全网最适合入门的面向对象编程教程:50 Python函数方法与接口-接口和抽象基类
python·嵌入式·面向对象·电子diy
weixin_632077631 天前
udp聊天室
udp·网络编程·嵌入式·编程·聊天室
fanged3 天前
Linux下的ADSP(TODO)
嵌入式
winddevil3 天前
[rCore学习笔记 027]地址空间
rust·嵌入式·rcore
宇努力学习4 天前
C语言编译原理
c语言·开发语言·嵌入式
玄奕子5 天前
使用vscode上传git远程仓库流程(Gitee)
vscode·gitee·嵌入式·git仓库
—你的鼬先生5 天前
基于树莓派ubuntu20.04的ros-noetic小车
python·嵌入式·ros·树莓派项目
倒霉熊dd6 天前
Cortex-M3架构学习:异常
学习·嵌入式·cortex-m3架构