libtiff.3.dylib:未知所需的加载命令0x80000022

时间:2009-11-15 18:43:04

标签: c++ macos osx-snow-leopard shared-libraries

有人找到了解决此问题的方法吗? 我读到它与Snow Leopard中的新dylib格式有关...

(这是我从MacPorts回来的lib。)

谢谢, 瑞

3 个答案:

答案 0 :(得分:2)

你想用什么图书馆?您可能有一些旧版本的构建工具或应用程序。您是否更新了所有MacPorts安装?

sudo port selfupdate
sudo port -u upgrade outdated

编辑:根据您的其他信息,更多问题:

您有-I /sw/include-L /sw/lib这些是Fink的标准位置,而不是MacPorts(/opt/local/{include,lib})。一般来说,混合来自Fink和MacPorts的软件包并不是一个好主意。你真的从Fink那里得到了什么吗?如果是这样,所有Fink包都是最新的吗?

如果这不能解决问题,你是建立10.5,如果是,那么10.5?或者你是在10.6上建立一个针对10.5和10.6的应用?确保在任何一种情况下都有最新的Xcode。

编辑:基于粗略的信息来诊断这样的问题是非常困难的。您在最新评论中说Leopard,但之后您说您正在使用10.6 SDK。此时,我可以建议您确保安装了最新的Xcode更新,如果您需要更多帮助,请更新问题,更详细地说明您要执行的操作以及确切的方式和位置试图这样做,包括像gcc等人的工具版本。祝你好运!

答案 1 :(得分:1)

每当我们尝试在没有 -isysroot /Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min=10.5的Snow Leopard 上运行编译和链接的可执行文件时,我们就会遇到同样的问题,然后尝试在Leopard上运行它。请注意,-isysroot设置与上面的评论不同。

答案 2 :(得分:0)

在10.5 X机器的OS X 10.6机器上错误地构建了应用程序。开发人员可以通过考虑三件事来解决这个问题:

  1. 使用正确的编译器参数:     gcc-4.2 -mmacosx-version-min = 10.5 -isysroot /Developer/SDKs/MacOSX10.5.sdk ...
  2. 使用正确的链接器设置(在link命令之前设置环境变量)。这是必需的,因此OS X 10.6链接器将不使用加载器命令“LC_DYLD_INFO_ONLY”(= 0x80000022),因为OS X 10.5不理解此命令:

    导出MACOSX_DEPLOYMENT_TARGET = 10.5 (或setenv MACOSX_DEPLOYMENT_TARGET = 10.5)

  3. 修复此问题后,可以通过运行'otool'来检查应用程序是否针对OS X 10.5正确构建:

    otool -l binary

    正确的二进制文件不应包含任何'LC_DYLD_INFO_ONLY'加载命令(仅限'LC_DYLD_INFO'命令)。

    (另见我的博客文章http://grauonline.de/wordpress/?p=71