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

标签 c++ git build open-source gimp

我尝试在 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

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

关于c++ - 在 OSX 上从源构建 GIMP 2.10 在 "gimp-debug-tool-2.0"上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50281428/

相关文章:

git - 为什么 git 'pull request' 不叫 'push request' ?

git - 将 git 与重写 SSL 证书的代理一起使用

git - 将本地 Git 存储库从 IDE 迁移到 Visual Studio Online

build - Sublime Text 不构建任何东西

build - 代码契约构建性能

c++ - 调用返回右值引用的函数

c++ - 排序和删除不适用于大 vector 的重复项

c++ - 无法在 Linux 上使用屏幕外 OpenGL 上下文生成 mipmap

visual-studio - VS中平台和平台目标的区别

c++ - 分配内存的表达式是右值表达式还是左值表达式?