开发环境
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 update
与feeds 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路由器了。
致谢
最后,感谢探索过程中遇到的所有乐于助人的网友们,你们才是最棒的。
包括但不仅限于如下列表: