为 ARM64 的 OpenWrt 软路由编译 dogcom

近日发现小米 AC2100 性能实在太过弱鸡,不能很好满足搞事情的需求,遂购入 FriendlyPi R2S 一台作软路由。但苦于校园网宽带需要使用 Dr.com 客户端,而之前使用的 dogcom 第三方客户端只能在 MIPS 架构运行,不能兼容 ARM64 的软路由处理器,在这个问题解决前无法作为主路由使用,网上也没找到现成的包。但好在该项目是开源的,我们便可以自己编译一个。

先放一个编译完成的 dogcom 客户端链接,大小 735KB:dogcom - cyp0633’s Drive。如果你只是想找客户端,OK,到这里就可以退出了。

原项目地址:mchome/dogcom

显然大部分人的电脑处理器是 AMD64 架构,直接用 AMD64 的 GCC 当然不能正常编译。对于跨架构的编译,网络上很大一部分的解决方案都是使用交叉编译,但这个方法似乎挺麻烦的。转念一想,既然大部分人都有 Android 手机,而这手机又是 ARM64 架构的,如果用它编译出 Linux 的二进制文件,不就简单了?

显然早就有不少人打了 Android 手机的算盘,做出了可以在其上运行 Linux 系统的方案。解决方案大致有 Termux 和 Linux Deploy 等几种,这里使用 Linux Deploy,因其 SSH 比较方便,但需要 Root——我刚好有。

meefik/linuxdeploy

大致的步骤可以参阅 https://my.oschina.net/zss1993/blog/1790223,但就在我的 Android 11 系统的小米 10 Pro 上的情况来说,需要说明一下:

  • 不需要 Busybox,可以直接使用。
  • 文章作者使用的是老版本,如果你使用新版本遇到不同的部分,可以酌情选择或者保持默认。
  • ARM64 的手机当然是无法安装 x86 或 AMD64 镜像的,反过来也不行,除非你搞个 QEMU,当然这也可以作为一个替代方案。
  • 个人认为没必要设置挂载,在 PC 上使用 WinSCP 更舒服。

安装好 Ubuntu 后,使用电脑 SSH 连接同局域网中手机 IP,即可控制容器中的 Linux 系统。我选择了 Ubuntu 18.04 LTS Bionic Beaver,理论上 Debian 系也都差不多。

输入以下命令:

bash
1
2
3
4
sudo apt install build-essential # 安装必备依赖库和编译器
git clone https://github.com/mchome/dogcom # 下载代码
cd dogcom # 进入文件夹
make static=y # 编译并使用静态库,下面讲

使用静态库可以避免使用不同编译器时找不到动态链接库的情况,但文件大小会从 80KB 增长至 700 多 KB。

然后使用 WinSCP 把那个拷贝到 R2S 的某个目录,再把你的配置文件拷进去,执行就可以了。

关于如何生成配置文件,可以参考 https://www.right.com.cn/forum/thread-215978-1-1.html

效果大概是这样子。

执行

等有空了再折腾下 ipk 的搞法。

参考文献

qemu /lib/ld-linux-aarch64.so.1: No such file or directory_深空深蓝的博客 - CSDN 博客 _ld-linux-aarch64.so.1

makefile 强制使用静态链接库 _xiexievv 的专栏 - CSDN 博客 _makefile static

【Linux Deploy】一、Linux Deploy 安装配置使用教程 - MaxBill 个人空间 - OSCHINA - 中文开源技术交流社区

CC BY-SA

This content is licensed under a Creative Commons Attribution-ShareAlike 4.0 International license.

许可证:CC BY-SA 4.0
最后更新于 Jun 12, 2023 19:53 +0800