如何在Yocto Warrior分支为Intel x86板构建mono-fastcgi-server?构建遇错求助
一、修复mono-xsp的configure失败问题
你遇到的oe_runconf failed错误大多是configure脚本找不到必要依赖、配置参数不匹配导致的,给你几个实用的排查和解决方向:
查看详细日志定位根因
先去查看具体的configure失败日志,路径是tmp/work/<你的x86架构>/mono-xsp/git-r0/temp/log.do_configure,里面会明确说明是缺少某个库、头文件,还是某个参数不支持——比如常见的缺失libglib-2.0、libssl相关开发包的问题,日志里都会写清楚。补充关键依赖包
你的local.conf里已经加了不少依赖,但可能还漏了几个核心项,建议更新CORE_IMAGE_EXTRA_INSTALL,加上:CORE_IMAGE_EXTRA_INSTALL += "libglib-2.0-dev libssl-dev"另外要确认
meta-mono仓库是和Yocto Warrior分支兼容的版本,不同分支的配方逻辑有差异,拉取时要切换到对应的Warrior分支。清理缓存后重新构建
有时候旧的构建缓存会导致奇怪的兼容性问题,先清理mono-xsp的构建状态:bitbake -c cleansstate mono-xsp之后再重新运行你的镜像构建命令,比如
bitbake core-image-minimal。调整配方的configure参数
如果日志显示是参数不匹配的问题,可以修改meta-mono/recipes-devtools/mono/mono-xsp_git.bb里的EXTRA_OECONF,添加指定依赖路径的参数:EXTRA_OECONF += "--with-mono=${STAGING_BINDIR_CROSS} --with-libgdiplus=${STAGING_LIBDIR}"
二、为Intel x86板构建mono-fastcgi-server
mono-fastcgi-server一般是xsp项目的子模块,你可以通过以下步骤将其加入Yocto构建流程:
检查现有配方
先查看meta-mono/recipes-devtools/mono目录下有没有mono-fastcgi-server相关配方,如果没有,就自己创建一个。编写mono-fastcgi-server配方文件
在meta-mono/recipes-devtools/mono目录下新建mono-fastcgi-server_git.bb,内容参考如下(注意根据实际源码路径调整):SUMMARY = "Mono FastCGI Server for Nginx integration" HOMEPAGE = "https://www.mono-project.com/docs/web/fastcgi/" LICENSE = "MIT" LICENSE_FILES_CHKSUM = "file://../../LICENSE;md5=abc123" # 替换成实际的LICENSE文件md5值 SRC_URI = "git://github.com/mono/xsp.git;branch=warrior;subpath=src/FastCGI" S = "${WORKDIR}/git/src/FastCGI" inherit autotools mono DEPENDS = "mono libgdiplus libglib-2.0" EXTRA_OECONF = "--prefix=${prefix} --sysconfdir=${sysconfdir}" do_install() { oe_runmake install DESTDIR=${D} }要确保SRC_URI里的分支是Warrior对应的,subpath指向fastcgi-server的源码目录。
添加到镜像安装列表
在conf/local.conf里添加:CORE_IMAGE_EXTRA_INSTALL += "mono-fastcgi-server"指定Intel x86架构
在conf/local.conf里设置对应硬件的MACHINE,比如针对64位Intel板:MACHINE ?= "intel-corei7-64"32位板可以用
intel-core2-32,根据你的硬件选择即可。启动构建
运行bitbake core-image-minimal(或者你的目标镜像名称),Yocto会自动拉取源码、构建mono-fastcgi-server并打包到最终镜像中。
内容的提问来源于stack exchange,提问作者akr

