有人找到了解决此问题的方法吗? 我读到它与Snow Leopard中的新dylib格式有关...
(这是我从MacPorts回来的lib。)
谢谢, 瑞
答案 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机器上错误地构建了应用程序。开发人员可以通过考虑三件事来解决这个问题:
使用正确的链接器设置(在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)
修复此问题后,可以通过运行'otool'来检查应用程序是否针对OS X 10.5正确构建:
otool -l binary
正确的二进制文件不应包含任何'LC_DYLD_INFO_ONLY'加载命令(仅限'LC_DYLD_INFO'命令)。
(另见我的博客文章http://grauonline.de/wordpress/?p=71)