Yocto新手:添加meta-telephony到Poky执行bitbake askterik遇oe_runmake失败
oe_runmake failed with meta-telephony & Asterisk in Yocto (Raspberry Pi) Hey there, fellow Yocto newbie! Let's break down how to fix that frustrating meta-telephony ERROR: oe_runmake failed error you're seeing when running bitbake asterisk (I assume that's a typo for "asterisk" instead of "askterik"). This error usually means the make step during compilation hit a snag—here's how to dig into it and fix things:
1. First, Grab the Full Error Log
The generic oe_runmake failed message doesn't tell you the real issue. You need to look at the detailed build logs to see what went wrong during the actual make execution:
- Run
bitbake asterisk -e > asterisk_build_debug.logto export full build environment and logs to a file, or - Navigate to your build directory's
tmp/logs/recipes-telephony/asterisk/asterisk/folder and check thelog.do_compilefile—this will show you the exact error that causedmaketo fail (missing headers, undefined symbols, dependency issues, etc.)
2. Verify Layer Compatibility
Yocto branches are strict—make sure your meta-telephony layer is on the same branch as your Poky and meta-raspberrypi layers. For example:
- If you're using Poky's
kirkstonebranch, meta-telephony must also be checked out tokirkstone - Run
git branchin each layer's directory to confirm branch alignment. Mismatched branches often cause API or dependency breaks that lead to compile failures.
3. Check for Missing Dependencies
Asterisk (from meta-telephony) relies on several system libraries. Open the Asterisk recipe file (usually meta-telephony/recipes-telephony/asterisk/asterisk_*.bb) and look at the DEPENDS variable. Common dependencies include:
openssllibxml2sqlite3ncurses
Ensure all these dependencies are available in your build setup:
- If a dependency comes from meta-openembedded (most do), make sure
meta-oeis added to yourbblayers.conf - Run
bitbake -s | grep <dependency-name>to confirm the package exists in your layer set
4. Validate Cross-Compile Setup
Since you're targeting Raspberry Pi (ARM architecture), make sure the meta-telephony recipe is configured for cross-compilation:
- Check the recipe's
EXTRA_OEMAKEvariable—should pass cross-compiler flags likeCC=${CC}orCROSS_COMPILE=${TARGET_PREFIX} - If the recipe was written for x86 by default, you might need to add ARM-specific patches or adjust compile arguments.
5. Clean Build Cache & Retry
Old build artifacts can cause weird, hard-to-debug failures. Wipe the Asterisk build cache and start fresh:
bitbake -c cleanall asterisk bitbake asterisk
6. Check Layer Priority & Conflicts
Make sure your bblayers.conf has layers in the correct order (base layers first, feature layers last):
BBLAYERS ?= " \ /path/to/poky/meta \ /path/to/poky/meta-poky \ /path/to/poky/meta-yocto-bsp \ /path/to/meta-raspberrypi \ /path/to/meta-openembedded/meta-oe \ /path/to/meta-telephony \ "
Also, ensure no other layer in your setup provides a conflicting version of Asterisk—run bitbake -s | grep asterisk to confirm only meta-telephony's version is being used.
内容的提问来源于stack exchange,提问作者Mohammed Harris

