在 OSX 上从源代码构建 GIMP 2.10 在"gimp-debug-tool-2.0"失败

Building GIMP 2.10 from source on OSX fails on "gimp-debug-tool-2.0"

本文关键字:gimp-debug-tool-2 失败 GIMP OSX 源代码 构建      更新时间:2023-10-16

我试图在OSX上构建GIMP 2.10已经一周了,但没有成功。大多数问题都是所有不同的依赖关系等等。虽然这需要时间,但所有这些都是可以解决的,但现在我想我走到了死胡同。我已经到了我终于可以运行"make"的阶段,经过一段时间构建不同的东西,它在"gimp-debug-tool-2.0"上出错了。以下是输出日志:

Making all in app-tools
CCLD     gimp-debug-tool-2.0
Undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_NSString", referenced from:
objc-class-ref in libappwidgets.a(gimpcriticaldialog.o)
"_OBJC_CLASS_$_NSWorkspace", referenced from:
objc-class-ref in libappwidgets.a(gimpcriticaldialog.o)
"_objc_autoreleasePoolPop", referenced from:
_gimp_critical_dialog_response in libappwidgets.a(gimpcriticaldialog.o)
"_objc_autoreleasePoolPush", referenced from:
_gimp_critical_dialog_response in libappwidgets.a(gimpcriticaldialog.o)
"_objc_msgSend", referenced from:
_gimp_critical_dialog_response in libappwidgets.a(gimpcriticaldialog.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [gimp-debug-tool-2.0] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2

我在构建Qt,OpenCv应用程序时遇到了类似的错误。问题是缺少库,我通过提供这些库的路径来解决它。但是在构建似乎是内部工具的"gimp-debug-tool-2.0"时可能会缺少什么。

如果有人有任何类似的经历,或者对我如何解决这个问题有任何线索/提示,并且可以为我指出正确的方向,我们将不胜感激。

根本原因是 gimp-debug-tool-2.0 是一个与 OS X 操作系统集成的新模块,可在应用程序发生故障时显示对话框。 它引用了NSString和NSWorkspace类,它们是OS X的一部分。 因此,您需要链接到相应的 OS X 框架以解析符号。

不幸的是,您在构建周期开始时运行的自动配置引用了CoreFoundation框架,但这不是 NSString 或 NSWorkspace 实际存在的地方。

现在的解决方法是将其作为LDFLAGS环境变量的一部分:

-framework Foundation -framework AppKit

这将允许构建正确完成,但有点麻烦的解决方法。 正确的方法是修复自动配置,以便它首先正确引用这些框架,但这比我能管理的要复杂得多

事实证明,尽管有那个调试工具,但一切都应该工作得很好。我实际上并不需要它,所以我很高兴跳过构建它。我用 -k 标志运行了 make,它继续出错,幸运的是没有其他错误。构建并安装后,它可以在我的MacBook上运行良好。

OSX 上的 GIMP 2.10.1