Yocto Dunfell中Bitbake的PACKAGECONFIG配置异步特性是否正确?
Yocto Dunfell 库特性配置问题解答
问题1:是否正确用PACKAGECONFIG默认启用async特性
你的PACKAGECONFIG语法本身没问题,但存在依赖传递的漏洞:
- 你在库的recipe里通过
PACKAGECONFIG[async]的第三个字段声明了对libasync的依赖,这个依赖只会在开启async特性时被加到库的DEPENDS里,所以库本身能正常编译出带async的版本。但可执行程序的recipe仅依赖lib-with-async-option,不会自动继承libasync的依赖,导致链接阶段找不到libasync。
解决办法:
在库的recipe里,把libasync-dev添加到开发包的依赖中,确保可执行程序在拉取库的开发包时自动获取libasync的开发文件:
# 方案1:直接关联开发包依赖 RDEPENDS_${PN}-dev += "libasync-dev" # 方案2:在PACKAGECONFIG中同时声明运行时和开发依赖 PACKAGECONFIG[async] ="\ -DCMAKE_TURN_ON_ASYNC=libasync, \ -DCMAKE_TURN_ON_ASYNC=, \ libasync libasync-dev \ "
另外要确认库的CMakeLists.txt在开启CMAKE_TURN_ON_ASYNC=libasync时,正确链接了libasync,且生成的.pc文件(如果用pkg-config)包含-llibasync,保证可执行程序的CMake能正确识别依赖。
问题2:是否需要在MACHINE_FEATURES等变量中设置async
不需要。MACHINE_FEATURES是用来定义硬件相关特性(如wifi、蓝牙、触摸屏等)的,而async是你这个库的软件功能特性,完全不需要放到这类硬件相关变量里,仅通过PACKAGECONFIG控制编译选项就足够。
内容的提问来源于stack exchange,提问作者CivFan
相关产品推荐
相关产品推荐

