Bitbake构建trickle报错libevent not found的问题求助
解决Bitbake构建trickle时找不到libevent的问题
针对你在基于Yocto Zeus的Petalinux 2020.1中构建trickle时遇到的configure: error: libevent not found错误,以下是几个可行的解决方向:
1. 确认libevent的开发文件已正确部署到构建环境
Yocto中,libevent包提供运行时库,其开发文件(头文件、pkg-config配置)由libevent-dev自动关联提供,因此DEPENDS中声明libevent是正确的。你需要验证libevent的开发文件是否被正确部署到构建系统的sysroot中:
- 执行
bitbake libevent -c populate_sysroot,检查${STAGING_DIR_HOST}${libdir}/pkgconfig/目录下是否存在libevent.pc; - 同时确认
${STAGING_DIR_HOST}${includedir}/下有event.h等libevent头文件。
如果这些文件缺失,需要检查libevent的配方是否包含inherit pkgconfig,或者在do_install阶段是否正确安装了pkg-config配置文件。
2. 为trickle的configure指定libevent路径
trickle的autotools脚本可能无法自动识别STAGING_DIR中的libevent位置,你可以在配方中添加配置参数或环境变量来明确路径:
方式一:通过EXTRA_OECONF传递libevent路径
EXTRA_OECONF += "--with-libevent=${STAGING_DIR_HOST}"
方式二:设置pkg-config路径确保能找到配置文件
do_configure_prepend() { export PKG_CONFIG_PATH="${STAGING_DIR_HOST}${libdir}/pkgconfig:${PKG_CONFIG_PATH}" }
3. 检查trickle的configure依赖声明
查看trickle源码根目录的configure.ac文件,确认它查找libevent的方式:
- 如果使用
PKG_CHECK_MODULES([LIBEVENT], [libevent]),需确保libevent的.pc文件版本和路径符合要求; - 如果使用
AC_CHECK_LIB(event, ...),需确认${STAGING_DIR_HOST}${libdir}/下存在libevent的库文件,且链接路径正确。
调整后的参考配方
整合上述修改后的完整配方示例:
DESCRIPTION = "trickle is a voluntary, cooperative bandwidth shaper. trickle works entirely in userland and is cross platform compatible." LICENSE = "BSD" LIC_FILES_CHKSUM = "file://LICENSE;md5=d3a2bbd2a4afe8c5578c24d761f580f8" DEPENDS += "libevent libtirpc" SRCREV = "09a1d955c6554eb7e625c99bf96b2d99ec7db3dc" PV = "1.07+git09a1d95" SRC_URI = "git://github.com/mariusae/trickle;protocol=https" S = "${WORKDIR}/git" inherit autotools EXTRA_OECONF += "--with-libevent=${STAGING_DIR_HOST}" do_configure_prepend() { export PKG_CONFIG_PATH="${STAGING_DIR_HOST}${libdir}/pkgconfig:${PKG_CONFIG_PATH}" } do_install() { install -d ${D}${bindir} install -m 0755 trickle ${D}${bindir} install -m 0755 tricklectl ${D}${bindir} install -m 0755 trickled ${D}${bindir} }
内容的提问来源于stack exchange,提问作者proximous
相关产品推荐
相关产品推荐

