我试图在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”时可能会遗漏什么。
如果有人有任何类似的经历或有任何线索/提示我如何解决这个问题并且可以指出我正确的方向,那将非常感激。
坦克提前。
答案 0 :(得分:1)
根本原因是gimp-debug-tool-2.0是一个新的模块,它与OS X操作系统集成,以便在应用程序发生故障时显示对话框。它引用了NSString和NSWorkspace类,它们是OS X的一部分。因此,您需要链接到相应的OS X框架以解析符号。
不幸的是,您在构建周期开始时运行的自动配置引用了CoreFoundation
框架,但这不是NSString或NSWorkspace实际存在的地方。
现在的解决方法是将其作为LDFLAGS环境变量的一部分包含在内:
-framework Foundation -framework AppKit
这将允许构建正确完成,但有点狡猾的解决方法。正确的方法是修复自动配置,以便它首先正确引用这些框架,但这比我能管理的更复杂
答案 1 :(得分:0)
事实证明,尽管有这个调试工具,一切都应该运行得很好。我实际上并不需要它,所以我很高兴跳过它。我用-k标志运行make,它继续出错,幸运的是没有其他错误。在构建和安装之后,它在我的MacBook上运行得很好。