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

Github Action在Mac arm64架构构建失败,Windows/Linux正常

问题:Mac arm64平台Godot 3插件构建链接失败(引入TagLib后)

我通过Github Action构建Godot 3程序的依赖库,依赖从Conan Center拉取。该流程在插件作者的示例项目中可正常运行,但引入TagLib库并在代码中调用后,仅Ubuntu和Windows平台构建成功,Mac平台始终失败。已排查构建日志并消除所有错误和警告,问题仍存在,最终报错如下:

ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [libVeles.dylib] Error 1
make[1]: *** [CMakeFiles/Veles.dir/all] Error 2
make: *** [all] Error 2
Error: Process completed with exit code 2.

可能的原因及解决步骤

  • TagLib的Conan包架构不匹配:检查Conan拉取的TagLib包是否支持arm64架构。Mac平台下Conan可能默认拉取x86_64版本,导致链接时缺失arm64符号。可在Conan命令中明确指定架构:

    conan install . --settings=os=Macos --settings=arch=arm64
    

    也可在conanfile.txt/conanfile.py的settings字段中配置,确保arm64架构被正确识别。

  • CMake架构配置缺失:确认CMakeLists.txt中是否针对Mac arm64做了适配,比如设置CMAKE_OSX_ARCHITECTURES为arm64,或者在Github Action的Mac构建任务中传递正确的架构参数。

  • 符号导出问题:检查代码中调用TagLib的部分,是否因编译选项(如-fvisibility=hidden)、命名空间限制导致符号未被暴露给链接器。可尝试在CMake中添加-fvisibility=default强制导出符号,或核对TagLib头文件的导出宏是否正确使用。

  • Github Action Runner架构不匹配:确认Mac runner的架构类型(Github提供x86_64和arm64两种),若用x86_64 runner构建arm64产物,需配置交叉编译模式,确保Conan和CMake都适配交叉编译流程。

  • TagLib Conan包兼容性问题:尝试切换TagLib的Conan包版本,或放弃预编译包,改用源码编译TagLib,验证是否能解决架构不兼容问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 23:47:52