要确定一个软件包在 OpenWrt 的 menuconfig
中的位置,可以使用以下几种方法:
1. 使用快捷键搜索 (/
)
在 make menuconfig
界面中按下 /
键,然后输入软件包的名字或部分关键字。例如:
/
bluez
搜索结果会显示软件包所在的位置。例如:
Symbol: PACKAGE_bluez-utils [=y]
Type : boolean
Prompt: bluez-utils
Location:
-> Network
-> Bluetooth
- Location 表示该包在菜单中的路径:
Network -> Bluetooth
。 - Symbol 是该包的配置符号:
PACKAGE_bluez-utils
。
2. 查看 feeds
中的软件包信息
OpenWrt 的包定义通常位于 feeds
目录中。你可以直接搜索目标软件包的位置:
find ./feeds -name Makefile | xargs grep "<package_name>"
例如,要查找 bluez
:
find ./feeds -name Makefile | xargs grep bluez
搜索结果中可能包含类似的路径:
./feeds/packages/net/bluez/Makefile
这个路径表明 bluez
在 net
分类中。
3. 查看 Makefile
中的分类
每个 OpenWrt 包都有一个 Makefile
,里面定义了该包的分类(CATEGORY
和 SUBMENU
)。可以直接打开包的 Makefile
查看:
vi feeds/packages/net/bluez/Makefile
在文件中查找类似以下内容:
CATEGORY:=Network
SUBMENU:=Bluetooth
这说明该包位于 menuconfig
的 Network -> Bluetooth
下。
4. 确认依赖关系
有些软件包不会直接显示在 menuconfig
中,可能是因为它是一个依赖包,只有在其他软件包启用时才会出现。你可以:
- 查看软件包的
Makefile
中的依赖定义:DEPENDS:=+libfoo +libbar
- 确保这些依赖项已启用,否则主包不会出现在
menuconfig
中。
5. 使用 scripts/feeds search
可以通过 OpenWrt 提供的 feeds
脚本查找包的信息:
./scripts/feeds search bluez
示例输出:
Package: bluez-utils
Version: 5.55-1
Depends on: +libdbus +libglib2
Category: Network
Submenu: Bluetooth
Description: BlueZ utilities
从这里可以知道 bluez-utils
在 Network -> Bluetooth
下。
总结
- 快捷键
/
是最简单的方法,适用于直接查找软件包的路径。 - 如果你想深入了解包的来源或分类,可以查看
feeds
中的Makefile
或使用scripts/feeds search
。 - 确保相关依赖已启用,否则软件包可能不会显示在
menuconfig
中。