为 OpenWrt 路由器编译 minieap-sysu 项目

news/2024/9/20 2:56:46/文章来源:https://www.cnblogs.com/Undefined443/p/18375072

学校的校园网要使用锐捷认证,于是想把认证客户端装到刷了 OpenWrt 的路由器上面。然而认证客户端 Linux 版只支持 x86 架构,我的路由器处理器却是 AArch64 架构,装不了,所以只能想办法找 AArch64 架构的解决方案。

经过一番搜索,我找到了 minieap-sysu 这个项目,不过需要自己编译可执行文件。下面记录了我的编译过程。

Prerequisite

编译可执行文件首先需要有 toolchain(编译工具链)。我们需要找到自己路由器平台所对应的 toolchain。OpenWrt 项目已经为我们预编译好了各种路由器平台上的 toolchain,所以我们不用再自己手动编译 toolchain 了。打开 Firmware Selector,搜索你的路由器型号,并选择固件版本,在搜索结果中点击最左侧的文件夹图标进入构建仓库:

image

在构建仓库的底部可以找到我们需要的 toolchain

image

下载并解压 toolchain,并将 toolchain 的路径添加到 PATH:

export PATH="/path/to/toolchain/bin:$PATH"

如:

export PATH="/home/ubuntu/openwrt-toolchain-23.05.4-mediatek-filogic_gcc-12.3.0_musl.Linux-x86_64/toolchain-aarch64_cortex-a53_gcc-12.3.0_musl/bin:$PATH"
  • OpenWrt Firmware Selector
  • ImmortalWrt Firmware Selector

如果没有对应版本的 toolchain 怎么办:如果没有对应版本的 toolchain,那我们就自己编译一个。编译 OpenWrt 的过程可以参见博客编译 OpenWrt,在编译时 toolchain 会被自动构建并存储到 staging_dir

Build

  1. 克隆并进入代码库:

    git clone https://github.com/WeiMXi/minieap-sysu.git
    cd minieap-sysu
    
  2. 编辑配置文件 config.mk,这里要把编译器(CC)改为我们刚刚下载的 toolchain 里的。查看 toolchainbin 目录,这里我可以找到我的编译器为 aarch64-openwrt-linux-musl-gcc-12.3.0,于是用它替换原来的 CC:

    # 将
    CC := mipsel-openwrt-linux-gcc-8.4.0
    # 替换为
    CC := aarch64-openwrt-linux-musl-gcc-12.3.0
    
  3. 开始编译:

    make
    

    编译产物是项目根目录下的 minieap

Run

  1. minieap 上传到路由器:

    scp -O minieap root@OpenWrt:
    
  2. 登录路由器,启动 minieap

    ./minieap -u <student-id> -p <password> -n en0 --module rjv3
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/785734.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

线性dp:最长上升子序列

最长上升子序列本文与leetcode300.最长递增子序列,这题题意一样,阅读完本文可以挑战一下力扣链接 题目叙述: 给定一个无序的整数数组,找出其中最长上升子序列(LIS)的长度。 输入: [5,7,1,9,4,6,2,8,3]输出 4解释最长上升子序列是[1,4,6,8],其长度为4。动态规划的设计…

Day01 Uboot编译

一. 安装环境1. 安装依赖sudo apt-get install gcc make cmake rsync wget unzip build-essential git bc swig libncurses5-dev libpython3-dev libssl-dev python3-distutils android-tools-mkbootimg -y   2. 安装编译器wget http://releases.linaro.org/components/toolc…

三维模型单体化软件:地理信息与遥感领域的精细化革命

在地理信息与遥感科学日新月异的发展浪潮中,单体化软件作为一股强大的驱动力,正引领着我们迈向空间信息处理与应用的新纪元。本文旨在深度解析单体化软件的核心价值、技术前沿、实践应用及面临的挑战,共同探讨这一技术如何塑造行业的未来。单体化软件:精细化时代的钥匙单体…

EasyExcel文档

源自官方文档,仅供我个人使用,其他人请移步官方地址:https://easyexcel.opensource.alibaba.com/,官方文档更详细更好!! 新手必读官方网站:https://easyexcel.opensource.alibaba.com/ github地址:https://github.com/alibaba/easyexcel gitee地址:https://gitee.com/…

在VS Code中使用Snippet Craft扩展提高编码效率

Snippet Craft 一个VS Code代码片段管理插件 功能 创建和插入代码片段 在编辑器区域右键菜单中点击插入Snippet,或在代码片段视图中点击条目,则会将代码片段插入到当前激活文档的光标位置。代码片段编辑 代码片段在左侧栏中,根据创建时的文件内容类型,分组显示代码片段,可…

cmake Makefile面试问题

摘自:https://wenku.baidu.com/view/4db705bdba0d6c85ec3a87c24028915f814d8462.html?_wkts_=1724332395577&bdQuery=cmake+%E9%9D%A2%E8%AF%95%E9%A2%98

Modern CMake 简介

摘自:https://zhuanlan.zhihu.com/p/76975231 Modern CMake 简介历史背景CMake是一个构建系统生成器(build-system generator)。常见的构建系统,有Visual Studio,XCode,Make等等。CMake可以支持不同平台下构建系统的生成。 CMake的出现已经有接近20年的历史,它的发展过程…

048、Vue3+TypeScript基础,基本的子页面和父页面相互通讯

01、main.js代码如下:// 引入createApp用于创建Vue实例 import {createApp} from vue // 引入App.vue根组件 import App from ./App.vueconst app = createApp(App);// App.vue的根元素id为app app.mount(#app)02、App.vue代码如下:<template><div class="app&…

1、拟合、预测、估算器、管道与模型评估

一、拟合和预测:估算器基础 1.1 资源导入、样本定义和训练from sklearn.ensemble import RandomForestClassifier #随机森林分类器 """ random_state=0 将使用固定的随机数种子(在这个例子中是0)来初始化随机数生成器。 这样,无论你的代码运行多少次,只要…

DDD精粹速读(一)

1 你需要知道的 - 战略设计 DDD是一种软件设计和构建方法,其重点在于独立于数据持久化等技术问题,准确表达业务规则。 不幸,DDD 对新手来说极具挑战性,部分原因是它有许多独特的概念需要学习。本文我简要介绍这些重要的思想,以便你能自信继续你的 DDD 旅程。 第一部分将侧…

消息队列作用(解耦、异步、削峰)

原文:消息队列作用(解耦、异步、削峰)图详解一、消息队列简介 简单来说,“消息队列”是在消息的传输过程中保存消息的容器。MQ 全称为 Message Queue,消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信。 消…

C++ 链表

1. 前言 链表:不仅存储 当前元素的数据,还存储着 元素排列顺序 2. 正题 2.1 如何存储节点? 我们可以使用 结构体 数组来存储 链表节点 struct Node {int val; // 可以是 string 或其它复杂的类型int nxt; } node[N];Tip: 下标顺序不是单链表顺序val 代表 元素本身,nxt 代表…