Ubuntu 22.04编译gtkmm4遇Ninja未知IO错误,求解决
问题:Ubuntu 22.04编译gtkmm-4.8.0时ninja构建失败
在Ubuntu 22.04环境下编译gtkmm-4.8.0,执行meson配置命令:
raphy@raohy:~/gtkmm-4.8.0$ meson setup --prefix /usr --libdir lib your_builddir . The Meson build system Version: 1.3.0 Source dir: /home/raphy/gtkmm-4.8.0 Build dir: /home/raphy/gtkmm-4.8.0/your_builddir
执行ninja构建时出现如下错误:
raphy@raohy:~/gtkmm-4.8.0/your_builddir$ ninja [125/2744] Generating subprojects/libsigcplusplus/docs/docs/manual/manual_html with a custom command FAILED: subprojects/libsigcplusplus/docs/docs/manual/html /usr/bin/python3 /home/raphy/gtkmm-4.8.0/subprojects/libsigcplusplus/tools/tutorial-custom-cmd.py html ../subprojects/libsigcplusplus/docs/docs/manual/libsigc_manual.xml subprojects/libsigcplusplus/docs/docs/manual/html error : Unknown IO error warning: failed to load external entity "http://docbook.sourceforge.net/release/xsl/current/html/chunk.xsl" cannot parse http://docbook.sourceforge.net/release/xsl/current/html/chunk.xsl [134/2744] Generating subprojects/libsigcplusplus/docs/docs/reference/html_and_tag with a custom command ninja: build stopped: subcommand failed.
解决方法
方法1:安装本地DocBook XSL样式包
错误源于构建脚本尝试远程加载DocBook的XSL文件失败,安装本地包可让构建使用本地文件:
sudo apt update && sudo apt install docbook-xsl
安装完成后回到build目录,重新执行ninja即可。
方法2:跳过文档编译(推荐,若无需生成文档)
如果不需要构建libsigcplusplus的文档,可直接禁用文档编译选项:
- 进入build目录:
cd ~/gtkmm-4.8.0/your_builddir - 修改meson配置:
meson configure -Dbuild-documentation=false - 重新执行构建:
ninja
方法3:手动指定本地XSL路径(可选)
若安装本地包后仍有问题,可手动修改libsigcplusplus的构建脚本,将远程URL替换为本地XSL文件路径。Ubuntu下docbook-xsl安装后,chunk.xsl的默认路径为/usr/share/xml/docbook/stylesheet/docbook-xsl/html/chunk.xsl,找到脚本中引用远程URL的部分替换即可,但此方法较繁琐,优先推荐前两种。
内容的提问来源于stack exchange,提问作者Raphael10
相关产品推荐
相关产品推荐

