当前位置: 首页 > news >正文

OpenWrt package - BuildPackage

一. 前言

        该文章所涉及到的知识都来自OpenWrt Wiki官网。OpenWrt的软件编译模板系统使软件移植到OpenWrt变得非常简单,如果在一个典型的package目录下,我们可以发现3个东西:package/Makefile,package/patches,package/files。

package/patches:目录不是必须的,一般是为了bug修复和减少目标文件的尺寸。

package/Makefile:是必须存在的,它提供了下载和编译package实际所需的步骤。

package/files:package需要用到的文件(不是.c和.h文件)。

例子如下:

include $(TOPDIR)/rules.mkPKG_NAME:=bridge
PKG_VERSION:=1.0.6
PKG_RELEASE:=1
PKG_BUILD_DIR:=$(BUILD_DIR)/bridge-utils-$(PKG_VERSION)
PKG_SOURCE:=bridge-utils-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@SF/bridge
PKG_HASH:=9b7dc52656f5cbec846a7ba3299f73bdinclude $(INCLUDE_DIR)/package.mkdefine Package/bridgeSECTION:=baseCATEGORY:=NetworkTITLE:=Ethernet bridging configuration utility#DESCRIPTION:=This variable is obsolete. use the Package/name/description define instead!URL:=http://bridge.sourceforge.net/
endefdefine Package/bridge/descriptionEthernet bridging configuration utility Manage ethernet bridging; a way to connect networks together to form a larger network.
endefdefine Build/Configure$(call Build/Configure/Default,--with-linux-headers=$(LINUX_DIR))
endefdefine Package/bridge/install$(INSTALL_DIR) $(1)/usr/sbin$(INSTALL_BIN) $(PKG_BUILD_DIR)/brctl/brctl $(1)/usr/sbin/
endef$(eval $(call BuildPackage,bridge))

二. BuildPackage变量

1. PKG_NAME

        package的名称。避免在包名称中使用下划线,否则可能导致难以发现的错误,导致编译失败。

2. PKG_VERSION

        我们要下载的package的版本号。

3. PKG_RELEASE

        package的Makefile的版本。

4. PKG_BUILD_DIR

        编译package的路径。

5. PKG_SOURCE

        原始源的文件名,一般是tarball包。

6. PKG_SOURCE_URL

        从什么地方下载源文件。

7. PKG_HASH

        下载源的checksum,用来校验该包是否是官方的。

8. PKG_CAT

        解压源的方式(zcat,bzcat,unzip)。

9. PKG_BUILD_DEPENDS

        需要在此包之前构建的包,如果需要确保包在生成时有权访问另一个包,要使用该选项,指定目录名称(例如openssl),而不是二进制包(libopenssl)。此构建变量仅建立构建时依赖项。使用DEPENDS建立运行时依赖项。

10. PKG_CONFIG_DEPENDS

        指定哪些配置选项会影响生成配置,并应触发Build/Configure的重新运行

三. BuildPackage宏

1. Package/

SECTION:软件包的类型,当前未被使用。

CATEGORY:出现在menuconfig中的哪个菜单。

TITLE:软件包的简短描述。

DESCRIPTION:(已弃用)包的详细描述。

URL:下载原始软件包的链接。

MAINTAINER:软件包的维护者。

DEPENDS:可选的,编译该软件包前哪个软件包必须被编译和安装。

EXTRA_DEPENDS:可选的,运行时依赖项,不构建,仅添加到CONTROL文件中。

2. Package/conffiles

        此包安装的配置文件列表,每行一个文件。文件列表部分不应缩进:部分中没有前导制表符或空格。

3. Package/description

        软件包的描述。

4. Build/Prepare

        一组解压或patch源的命令,你可以放心地将其保留为未定义。

5. Build/Configure

        如果源不使用配置或具有正常的配置脚本,则可以将其保留为未定义。否则你可以在此处放置configure命令或使用$(call Build/Configure/Default)。

6. Build/Compile

       如何编译源代码,在大多数情况下,应该将其设置为未定义。

7. Build/Install

        如何安装已编译的源代码。

8. Build/InstallDev

        针对编译软件包(静态库,头文件)所需的文件,但在目标设备上没有用。

9. Build/Clean

        对于要清理过程中需要清除的东西。

10. Package/install

        一组命令,用于将文件复制到由 $(1)目录表示的 ipkg 中。作为源代码,您可以使用将从解压缩和编译的源代码安装的相对路径,或者$(PKG_INSTALL_DIR),这是上面步骤中Build/Install的文件结束的地方。

        某些定义以"Package/"为前缀,而其他定义只是"Build"的原因是可以从单个源生成多个包。OpenWrt在假设每个包Makefile一个源的情况下工作,但你可以根据需要将该源拆分为任意数量的包。由于你只需要编译一次源代码,所以有一个全局集合"Build"定义,但你可以通过向BuildPackage添加额外的调用来添加任意数量的"Package/"定义 - 参见dropbear包的例子。

四. 总结

        本文总结了OpenWrt BuildPackage的变量和宏以及他们的详细的使用方法。

相关文章:

OpenWrt package - BuildPackage

一. 前言 该文章所涉及到的知识都来自OpenWrt Wiki官网。OpenWrt的软件编译模板系统使软件移植到OpenWrt变得非常简单,如果在一个典型的package目录下,我们可以发现3个东西:package/Makefile,package/patches,package/…...

C++三体星战小游戏

物理小游戏&#xff0c;懒得 写注释。 游戏代码 #include<bits/stdc.h> #include<bits/stdc.h> #include<windows.h> #include<conio.h> using namespace std; int toint(double a){return ((int)(a*105))/10;} int rand(int a){return rand()%a;} vo…...

【zip密码】修改zip压缩包密码

Zip压缩包设置了密码&#xff0c;想要修改密码&#xff0c;我们该如何操作&#xff1f;今天分享两个修改zip压缩包密码的方法。 方法一&#xff1a; 输入密码&#xff0c;将zip压缩包里面的文件解压出来。 然后找到解压出来的文件&#xff0c;将文件重新压缩&#xff0c;并且…...

小小讲一下Linux基本命令

Linux是一套类Unix的操作系统&#xff0c;这套系统最大的优点就是安全便捷&#xff0c;快速高效。这就为它赢得了广大的市场空间。但是呢&#xff0c;Linux系统虽然广为流行&#xff0c;它也不是那么容易就可以学会的。比如说&#xff0c;如果我们不懂得Linux系统的基本操作命令…...

Python数据容器(列表list、元组tuple、字符串str、字典dict、集合set)详解

一、数据容器概念 相关介绍&#xff1a; 一种可以容纳多份数据的数据类型&#xff0c;容纳的每一份数据称之为一个元素。每一个元素&#xff0c;可以是任意类型的数据分为五类&#xff1a;列表[list]、元组(tuple)、字符串(str)、集合{set}、字典{dict} 相应区别&#xff1a…...

2023高教社杯数学建模思路 - 复盘:人力资源安排的最优化模型

文章目录 0 赛题思路1 描述2 问题概括3 建模过程3.1 边界说明3.2 符号约定3.3 分析3.4 模型建立3.5 模型求解 4 模型评价与推广5 实现代码 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 描述 …...

Linux 计算机网络基础概论

一、网络基本概念 1、网络 网络是由若干节点和连接这些结点的链路组成&#xff0c;网络中的结点可以是计算机、交换机、路由器等设备。通俗地说就是把不同的主机连接起来就构成了一个网络&#xff0c;构成网路的目的是为了信息交互、资源共享。 网络设备有&#xff1a;交换机…...

深入理解 C++ 中的 std::cref、std::ref 和 std::reference_wrapper

深入理解 C 中的 std::cref、std::ref 和 std::reference_wrapper 在 C 编程中&#xff0c;有时候我们需要在不进行拷贝的情况下传递引用&#xff0c;或者在需要引用的地方使用常量对象。为了解决这些问题&#xff0c;C 标准库提供了三个有用的工具&#xff1a;std::cref、std:…...

在其他python环境中使用jupyter notebook

1、切换到目标python环境 activate 目标python环境 2、安装notebook内核包 pip install ipykernel 3、加环境加入到notebook中 python -m ipykernel install 目标python环境 4、切换到base环境 activate base 5、打开目标项目的对应盘 如果&#xff0c;项目在c盘&…...

计算机网络-笔记-第二章-计算机网络概述

目录 二、第二章——物理层 1、物理层的基本概念 2、物理层下面的传输媒体 &#xff08;1&#xff09;光纤、同轴电缆、双绞线、电力线【导引型】 &#xff08;2&#xff09;无线电波、微波、红外线、可见光【非导引型】 &#xff08;3&#xff09;无线电【频谱的使用】 …...

Hive字符串数组json类型取某字段再列转行

一、原始数据 acctcontent1232313[{"name":"张三","code":"上海浦东新区89492jfkdaj\r\n福建的卡"...},{"name":"狂徒","code":"select * from table where aa1\r\n and a12"...},{...}]...…...

ElementUI Table 翻页缓存数据

Element UI Table 翻页保存之前的数据,网上找了一些,大部分都是用**:row-key** 和 reserve-selection,但是我觉得有bug,我明明翻页了…但是全选的的个框还是勾着的(可能是使用方法不对,要是有好使的…请cute我一下…感谢) 所以自己写了一个… 思路: 手动勾选的时候,将数据保存…...

使用 AutoGPTQ 和 transformers 让大语言模型更轻量化

大语言模型在理解和生成人类水平的文字方面所展现出的非凡能力&#xff0c;正在许多领域带来应用上的革新。然而&#xff0c;在消费级硬件上训练和部署大语言模型的需求也变得越来越难以满足。 &#x1f917; Hugging Face 的核心使命是 让优秀的机器学习普惠化 &#xff0c;而…...

AUTOSAR规范与ECU软件开发(实践篇)6.5 BswM模块概念与配置方法介绍

目录 1、BswM模块概念与配置方法介绍 (1) BswMModeRequestPort配置 (2) ModeCondition与LogicalExpression配置...

1.1 VMware Workstation与Kali的安装和配置1

资源见专栏第一篇文章https://blog.csdn.net/algorithmyyds/article/details/132457258 安装VMware 不多加赘述&#xff0c;直接按顺序安装即可。 有以下需注意的地方&#xff1a; 1.建议选择增强型服务&#xff1b; 2.不要加入体验改进计划。是否开启提示更新看你的想法&…...

DDR与PCIe:高性能SoC的双引擎

SoC芯片无处不在&#xff0c;小到家电控制的MCU&#xff0c;大到手机芯片&#xff0c;我们都会接触到。如今大部分芯片设计公司都在开发SoC芯片&#xff0c;一颗SoC芯片可以集成越来越多的功能&#xff0c;俨然它已成为IC设计业界的焦点。 高性能、高速、高带宽的互联和存储的…...

C#_特性反射详解

特性是什么&#xff1f; 为程序元素额外添加声明信息的一种方式。 字面理解&#xff1a;相当于把额外信息写在干胶标签上&#xff0c;然后将其贴在程序集上。 反射是什么&#xff1f; 反射是一种能力&#xff0c;运行时获取程序集中的元数据。 字面理解&#xff1a;程序运行…...

【跟小嘉学 Rust 编程】十三、函数式语言特性:迭代器和闭包

系列文章目录 【跟小嘉学 Rust 编程】一、Rust 编程基础 【跟小嘉学 Rust 编程】二、Rust 包管理工具使用 【跟小嘉学 Rust 编程】三、Rust 的基本程序概念 【跟小嘉学 Rust 编程】四、理解 Rust 的所有权概念 【跟小嘉学 Rust 编程】五、使用结构体关联结构化数据 【跟小嘉学…...

时间复杂度和空间复杂度

全文目录 算法的复杂度时间复杂度大O渐进表示法空间复杂度常见算法复杂度对比 算法的复杂度 算法在编写成可执行程序后&#xff0c;运行时需要耗费时间资源和空间(内存)资源 。因此衡量一个算法的好坏&#xff0c;一般是从时间和空间两个维度来衡量的&#xff0c;即时间复杂度…...

mac docker 卡住解决

文章目录 1、问题简述2、重新安装docker3、docker守护进程4、问题解决方案 1、问题简述 在docker desktop上更改了daemon.json的文件内容&#xff0c;应该是参数写的有问题&#xff0c;修改完配置再启动docker desktop就失败了&#xff0c;然后想着卸载docker desktop&#xf…...

2026年腾讯云OpenClaw/Hermes Agent配置Token Plan安装超全攻略

2026年腾讯云OpenClaw/Hermes Agent配置Token Plan安装超全攻略。OpenClaw是开源的个人AI助手&#xff0c;Hermes Agent则是一个能自我进化的AI智能体框架。阿里云提供计算巢、轻量服务器及无影云电脑三种部署OpenClaw 与 Hermes Agent的方案、百炼Token Plan兼容主流 AI 工具&…...

探索Pandas groupby的各种技巧和应用实例

groupby是Pandas中用于数据分析的重要工具&#xff0c;它允许我们根据特定列的不同值&#xff0c;对数据行进行灵活分组。分组后的数据可用于生成各类聚合值&#xff0c;从而帮助我们深入了解数据。在Pandas中&#xff0c;如果你想要分析数据的潜在模式或趋势&#xff0c;group…...

EmotiVoice终极指南:5分钟上手2000种音色的免费语音合成神器

EmotiVoice终极指南&#xff1a;5分钟上手2000种音色的免费语音合成神器 【免费下载链接】EmotiVoice EmotiVoice &#x1f60a;: a Multi-Voice and Prompt-Controlled TTS Engine 项目地址: https://gitcode.com/gh_mirrors/em/EmotiVoice 想要让AI帮你说话吗&#xf…...

Perforce 2025.2 REST API 技术预览版发布:开启“无客户端”运维新时代

Perforce 2025.2 REST API 技术预览版发布&#xff1a;开启“无客户端”运维新时代 在上一期“ Perforce on Tour 游戏研发效能进阶沙龙”回顾文章中&#xff0c;我们分享了Perforce 资深技术工程师 Kory Luo关于P4 MCP&#xff08;Model Context Protocol&#xff09;服务器的…...

CLIP原理与实战:零样本图文理解的范式革命

1. 项目概述&#xff1a;为什么CLIP不是又一个“多模态模型”&#xff0c;而是彻底改写图文理解游戏规则的底层工具你可能已经见过太多标榜“图文理解”“跨模态检索”的模型&#xff0c;但真正让从业者在2021年集体停下手头工作、反复刷新arXiv页面的&#xff0c;只有CLIP。它…...

网站收录提速:蜘蛛池合规使用与安全运营技巧

网站长期收录缓慢、新内容更新难以被发现、深层页面缺少展示机会&#xff0c;是多数中小站点运营的常见难题。在正规网站优化体系中&#xff0c;蜘蛛池是优质的辅助运营工具&#xff0c;核心作用是帮助搜索引擎快速识别站点优质页面&#xff0c;提升整体检索效率&#xff0c;改…...

锂电池健康评估:避开NASA/Oxford数据IC分析中的三个常见坑(滤波、异常值、容量增生)

锂电池健康评估实战&#xff1a;破解NASA/Oxford数据集IC分析的三重困局 当你在深夜盯着屏幕上那些扭曲的IC曲线时&#xff0c;是否也经历过这样的崩溃时刻&#xff1f;明明按照教科书步骤处理NASA数据集&#xff0c;得到的却是锯齿状的噪声图形&#xff1b;或是发现Oxford数据…...

京东评论拿到数据后对比同款竞品评论,看别家优势短板,找自身差异化卖点

京东评论已修复&#xff0c;需要的可以联系我留言一、数据归集抓取自家、2-3 款核心竞品近 3-6 个月评论&#xff0c;拆分好评、中差评统一维度&#xff1a;产品功能、做工品质、价格、物流售后、外观体验、适配性二、拆解优劣维度竞品优势统计高频夸赞词&#xff0c;汇总核心加…...

5分钟上手京东自动抢购工具:Python脚本让限量商品轻松到手

5分钟上手京东自动抢购工具&#xff1a;Python脚本让限量商品轻松到手 【免费下载链接】autobuy-jd 使用python语言的京东平台抢购脚本 项目地址: https://gitcode.com/gh_mirrors/au/autobuy-jd 还在为抢不到心仪商品而烦恼吗&#xff1f;Autobuy-JD京东自动抢购工具为…...

2026 主流技术栈:hermes agent多环境安装配置:Windows/Mac/Linux

一、Hermes agent 大模型选择 Hermes Agent 通过统一的模型抽象层接入不同厂商的大语言模型服务。实际部署时&#xff0c;建议根据数据合规要求、任务类型和成本预算进行选型。 1.1 国内场景&#xff1a;Kimi K2.6 对于数据需境内处理或存在私有化部署需求的场景&#xff0c…...