Yocto dunfell分支下Mednafen配方autotools do_compile编译失败求解
错误根因
你遇到的编译错误是Mednafen源码自带的intl(GNU gettext兼容层)目录下的配置变量@INTL_LIBTOOL_SUFFIX_PREFIX@未被正确替换导致的,本质是你的BitBake配方未正确配置gettext相关参数,和Yocto Dunfell分支的autotools配置逻辑不匹配。
配方修改步骤
- 补充gettext构建依赖,调整编译配置禁用内置intl层编译,优先使用Yocto提供的系统gettext库,或者直接关闭国际化支持跳过intl目录编译,修改后的完整配方如下:
SUMMARY = "Mednafen is a portable, utilizing OpenGL and SDL, argument(command-line)-driven multi-system emulator." HOMEPAGE = "https://mednafen.github.io/" SRC_URI = "https://mednafen.github.io/releases/files/${PN}-${PV}.tar.xz" SRC_URI[md5sum] = "7be60dd12edf8d61537f5598957e2884" FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" # 新增gettext-native构建依赖 DEPENDS += "gettext-native zlib libsndfile1 libsdl2" LICENSE = "GPL-2.0" LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263" S = "${WORKDIR}/${PN}" # 新增编译配置,禁用rpath和内置intl编译 EXTRA_OECONF += " \ --disable-nls \ --disable-rpath \ " inherit autotools-brokensep gettext
- 如果需要保留国际化支持,把上面的
EXTRA_OECONF替换为:
EXTRA_OECONF += " \ --enable-nls \ --with-libintl-prefix=${STAGING_DIR_HOST}${prefix} \ --disable-rpath \ "
- 如果修改后仍然报错,可以新增配置前清理步骤,清除源码残留的配置缓存:
do_configure_prepend() { rm -f ${S}/config.status ${S}/config.cache ${S}/intl/Makefile }
内容的提问来源于stack exchange,提问作者seksidavsan
相关产品推荐
相关产品推荐

