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

问题描述 投票:0回答:2

我试图在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”时可能会缺少什么。

如果有人有任何类似的经历或有任何线索/提示我如何解决这个问题,并指出我正确的方向,将非常感激。

坦克提前。

c++ git build open-source gimp
2个回答
1
投票

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

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

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

-framework Foundation -framework AppKit

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


0
投票

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

GIMP 2.10.1 on OSX

© www.soinside.com 2019 - 2024. All rights reserved.