物流网站建设与管理规划书,舆情网站直接打开,wordpress名片主题,广西中小型营销型网站建设公司一. 前言 该文章所涉及到的知识都来自OpenWrt Wiki官网。OpenWrt的软件编译模板系统使软件移植到OpenWrt变得非常简单#xff0c;如果在一个典型的package目录下#xff0c;我们可以发现3个东西#xff1a;package/Makefile#xff0c;package/patches#xff0c;package/…一. 前言 该文章所涉及到的知识都来自OpenWrt Wiki官网。OpenWrt的软件编译模板系统使软件移植到OpenWrt变得非常简单如果在一个典型的package目录下我们可以发现3个东西package/Makefilepackage/patchespackage/files。
package/patches目录不是必须的一般是为了bug修复和减少目标文件的尺寸。
package/Makefile是必须存在的它提供了下载和编译package实际所需的步骤。
package/filespackage需要用到的文件不是.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 解压源的方式zcatbzcatunzip。
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的变量和宏以及他们的详细的使用方法。