OpenWrt BuildPackage - depend

一. 前言

        该文章所涉及到的知识都来自OpenWrt Wiki官网

二. DEPENDS字段支持的语法

1. +

        表示当前软件包需要依赖于软件包foo,menuconfig时,当前软件包被选上时,软件包foo也会自动被选上。而取消选中当前软件包时,软件包foo是否会被选中由foo原来的选中状态决定。举例如下:

 <*> myapp......................... myapp
 -*- foo........................... foo
2.

        表示当前软件包需要依赖于软件包foo,menuconfig时,只有当软件包foo被选上时,当前软件包的选项才可见。举例如下

foo选中前:
 < > foo......................... foo

foo选中后:
 <*> foo......................... foo
 < > myapp......................... myapp
3. @FOO

        表示当前软件包依赖于配置选项CONFIG_FOO,menuconfig时,除非设置了CONFIG_FOO,否则当前软件包选项将不可见。这个常用来使当前软件包依赖于某个Linux版本或者目标板,例如@TARGET_ramips_mt7620_DEVICE_y1s将使该软件包只适用于ramips_mt7620_DEVICE_y1s目标板。也可以使用布尔表达式来表示复杂的依赖关系,例如 @(!TARGET_FOO||!TARGET_BAR) 将使当前软件包对 foo 和 bar 不可用。

4. +FOO:

        表示如果设置了编译选项CONFIG_FOO,当前软件包依赖于软件包bar,当前软件包被选上时,软件包bar也将自动被选上。典型的应用是:比如当前的软件包有某个选项,选中时,依赖对应的外部库,例如,OpenWrt的base-files的Makefile就有这样的应用。

5. @FOO:

        表示如果当CONFIG_FOO选项被选中时,当前软件包依赖于软件包bar。当CONFIG_FOO被设置,并且软件包bar被选中时,当前软件包才可见。

6. 一些典型的依赖关系配置符号

TARGET_:表示依赖于Target foo被选择。

TARGET__:表示依赖于Target foo的子Target bar被选择,这是对Target foo的子Target的依赖。

TARGET___:这是依赖于Target foo的子目标的子目标了。

LINUX_3_X:依赖于Linux内核的版本是3.x.*。

LINUX_2_6_X:依赖于Linux内核版本是2.6.x.*。

LINUX_2_4:只适用于Linux是2.4的版本。

USE_ULIBC,USE_GLIBC,USE_EGLIBC:依赖于某个种libc。

BROKEN:软件包无法构建或运行,只有在选择 "显示损坏的目标/软件包 "时才会显示。防止意外选择软件包导致构建失败。

IPv6:依赖于系统支持IPv6.

三. PKG_BUILD_DEPENDS

        PKG_BUILD_DEPENDS不使用+或@,其他的用法和DEPENDS一样,PKG_BUILD_DEPENDS使用的是PKG_NANE的名称,而不是单个软件包,例如,如果你想让openssl成为依赖,你可以写成PKG_BUILD_DEPENDS:=openssl,而当你的包依赖并选择openssl,你应该写DEPENDS:=+libopenssl,注意,但package下只有openssl。如果是主机需要构建的软件包,则写为PKG_BUILD_DEPENDS:=openssl/host。

四. 总结

        本文介绍了OpenWrt package相关的依赖是如何使用的。

你可能感兴趣的:(openwrt,linux)