You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在CI/CD中编译带Mono的自定义Godot版本?

在CI/CD中编译带Mono的Godot版本问题汇总

尝试在Github Actions中编译带有SGPhysics模块的Mono版Godot,采用godot-mono-builds提供的预编译Mono,参考官方文档编译Windows、iOS、Web版本时遇到以下问题:

Windows构建问题

  • 初始使用Windows运行器,确认Mono已下载完成,但编译时触发找不到Mono库的错误:
Found Mono root directory: %ProgramFiles%\Mono\desktop-windows-x86_64-release
RuntimeError: Could not find mono library in: %ProgramFiles%\Mono\desktop-windows-x86_64-release\lib:
  File "D:\a\SGPhysics2D\SGPhysics2D\SConstruct", line 716:
    SConscript("modules/SCsub")
  • 后续发现godot-mono-builds的预编译Mono仅适配Linux系统,改用Ubuntu交叉编译Windows时出现链接错误:
/usr/bin/x86_64-w64-mingw32-ld: /home/runner/mono-installs/desktop-windows-x86_64-release/lib/libmonosgen-2.0.a(libmini_la-mini-windows.o):(.text+0x2dc): undefined reference to `__imp_timeGetDevCaps'
/usr/bin/x86_64-w64-mingw32-ld: /home/runner/mono-installs/desktop-windows-x86_64-release/lib/libmonosgen-2.0.a(libmini_la-mini-windows.o):(.text+0x334): undefined reference to `__imp_timeSetEvent'

iOS构建问题

使用lipo打包时提示目标文件缺失:

fatal error: /Applications/Xcode_13.2.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/lipo: can't open input file: bin/libmonosgen-2.0.iphone.arm64.a (No such file or directory)

排查后发现实际生成的是arm架构文件bin/libmonosgen-2.0.iphone.arm.a,尝试用lipo合并为fat库时,报错称两个文件架构均为arm64,无法区分arm与arm64的差异。

Web构建问题

使用Ubuntu 20.04运行器编译时出现符号重复定义错误:

wasm-ld: error: duplicate symbol: getpwnam_r
>>> defined in /home/runner/mono-installs/wasm-runtime-release/lib/libmonosgen-2.0.a(libmini_la-mini-wasm.o)
>>> defined in /home/runner/work/SGPhysics2D/SGPhysics2D/emsdk-cache/emsdk-main/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten/libstubs.a(emscripten_libc_stubs.o)

wasm-ld: error: duplicate symbol: getpwuid_r
>>> defined in /home/runner/mono-installs/wasm-runtime-release/lib/libmonosgen-2.0.a(libmini_la-mini-wasm.o)
>>> defined in /home/runner/work/SGPhysics2D/SGPhysics2D/emsdk-cache/emsdk-main/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten/libstubs.a(emscripten_libc_stubs.o)

wasm-ld: error: duplicate symbol: getgrnam
>>> defined in /home/runner/mono-installs/wasm-runtime-release/lib/libmonosgen-2.0.a(libmini_la-mini-wasm.o)
>>> defined in /home/runner/work/SGPhysics2D/SGPhysics2D/emsdk-cache/emsdk-main/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten/libstubs.a(emscripten_libc_stubs.o)

wasm-ld: error: duplicate symbol: getgrgid
>>> defined in /home/runner/mono-installs/wasm-runtime-release/lib/libmonosgen-2.0.a(libmini_la-mini-wasm.o)
>>> defined in /home/runner/work/SGPhysics2D/SGPhysics2D/emsdk-cache/emsdk-main/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten/libstubs.a(emscripten_libc_stubs.o)

wasm-ld: error: duplicate symbol: pthread_sigmask
>>> defined in /home/runner/mono-installs/wasm-runtime-release/lib/libmonosgen-2.0.a(libmini_la-mini-wasm.o)
>>> defined in /home/runner/work/SGPhysics2D/SGPhysics2D/emsdk-cache/emsdk-main/upstream/emscripten/cache/sysroot/lib/wasm32-emscripten/libc.a(pthread_sigmask.o)

已解决:切换至Emscripten 1.39.9版本后问题消失(当前构建的是Godot 3.x版本,Godot 4.x情况可能不同)


内容的提问来源于stack exchange,提问作者Atlinx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 01:01:11