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号2 天前
详解Linux下多进程与多线程通信(一)
linux·c语言·嵌入式·进程与线程
2301_781143562 天前
江协科技STM32入门教程——通信接口
c语言·嵌入式
网易独家音乐人Mike Zhou3 天前
【Linux应用】开发板USB共享网络,网线或USB以太网共享网络(局域网连接PC和开发板,实现PC给开发板共享网络,USB通过NDIS驱动共享)
linux·网络·单片机·mcu·物联网·嵌入式·iot
Freak嵌入式5 天前
一文速通 Python 并行计算:13 Python 异步编程-基本概念与事件循环和回调机制
开发语言·python·嵌入式·协程·硬件·异步编程
不脱发的程序猿5 天前
SoC程序如何使用单例模式运行
linux·嵌入式
鑫宇吖5 天前
Polyspace作为MISRA-C合规性检查工具,其检查规则会根据目标C语言标准(C90或C99)动态调整限值要求。
c语言·嵌入式·c99·c90·polyspace·misra-c合规性检查
用户1259265423206 天前
使用 Git LFS 管理大文件并上传至 GitHub
嵌入式
巫山老妖6 天前
Linux流量分析:tcpdump&wireshark
linux·嵌入式
不脱发的程序猿6 天前
Linux守护进程
linux·嵌入式
desssq6 天前
嘉立创黄山派下载watch ui demo 教程(sf32)
ui·嵌入式·嘉立创·黄山派