1

我试图通过 CPAN 安装 XML::LibXSLT,这似乎工作正常,直到我尝试加载 Google Chrome 或 Microsoft Office。我在启动这些程序时遇到错误,并出现以下错误:

Dyld Error Message:
Library not loaded: /usr/lib/libxslt.1.dylib
Referenced from: /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks   
/DictionaryServices.framework/Versions/A/DictionaryServices
 Reason: no suitable image found.  Did find:
/usr/lib/libxslt.1.dylib: mach-o, but wrong architecture
/usr/lib/libxslt.1.dylib: mach-o, but wrong architecture

显然问题是 XSLT 安装的新 dylib,但这些似乎都是 X86_64,所以我不应该看到任何问题,我正在运行 Mac OS X 10.6.8。

运行时file /opt/local/lib/libxslt.dylib 我得到: /opt/local/lib/libxslt.dylib: Mach-O 64-bit dynamically linked shared library x86_64 与 libxslt.1.dylib 相同。

有没有办法解决这个问题,并恢复必须替换的原始文件?

编辑:如果要从另一个 Mac 10.6.8 64 位获取这些库的副本并用这些替换我明显混淆的库,这至少可以解决它们都被混淆的问题。

跑步也 [/usr/lib]$ ls | grep libxslt给了我:

libxslt 2.dylib
libxslt-plugins
libxslt.1.dylib
libxslt.a
libxslt.dylib
libxslt.la
libxslt.pc
4

2 回答 2

0

您是否安装到或以其他方式替换了 Apple 提供的原始库/usr/lib?你不应该那样做。否则,您可能会破坏依赖这些库的 OS X 的其他部分。您应该从备份中恢复原始库或重新安装 OS X。如果您想要更新版本,您应该将它们安装在其他地方,例如/usr/local/lib. 或者更好的是,您应该使用第三方包管理器,例如 Homebrew 或 MacPorts;/opt/local/lib实际上,从路径来看,您似乎正在使用 MacPorts 。使用它并且不要更改/usr(除/usr/local)或/System/Library.

于 2013-06-27T15:05:17.697 回答
0

这可能是相关的:如何在 Mac OS X 上编译通用二进制文件

我遇到了同样的问题,我重新编译了 libxslt 和 libxml 以支持 python 绑定,然后/usr/lib/libxslt.1.dylib: mach-o, but wrong architecture在启动某些应用程序时开始出现错误并立即崩溃(特别是 Synergy,它是一个 32 位/i386 应用程序)

我通过重新编译libxml2libxslt使用这些配置选项解决了这个问题:

./configure CFLAGS="-arch i386 -arch x86_64" \ CXXFLAGS="-arch i386 -arch x86_64" \ LDFLAGS="-arch i386 -arch x86_64" \ --disable-dependency-tracking

现在 libxml2 和 libxslt 库正确显示为通用二进制文件:

$ file /usr/local/lib/libxslt.1.dylib /usr/local/lib/libxslt.1.dylib: Mach-O universal binary with 2 architectures
/usr/local/lib/libxslt.1.dylib (for architecture i386): Mach-O dynamically linked shared library i386
/usr/local/lib/libxslt.1.dylib (for architecture x86_64):   Mach-O 64-bit dynamically linked shared library x86_64

$ file /usr/local/lib/libxml2.2.dylib
/usr/local/lib/libxml2.2.dylib: Mach-O universal binary with 2 architectures
/usr/local/lib/libxml2.2.dylib (for architecture i386): Mach-O dynamically linked shared library i386
/usr/local/lib/libxml2.2.dylib (for architecture x86_64):   Mach-O 64-bit dynamically linked shared library x86_64
于 2017-04-06T17:13:06.090 回答