2013-06-27 2 views
1

Je tentais d'installer XML :: LibXSLT via CPAN, cela semblait fonctionner correctement, jusqu'à ce que je tente de charger Google Chrome, ou Microsoft Office. Je reçois une erreur de lancer ces programmes avec les erreurs suivantes:Bibliothèque non chargée: /usr/lib/libxslt.1.dylib Erreur lors du chargement de la bibliothèque après l'installation avec CPAN

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 

Il est évident que le problème est le nouveau dylibs que XSLT installé, mais ceux-ci semblent tous être X86_64 donc je ne devriez pas voir de problèmes avec cela, Je cours Mac OS X 10.6.8.

Lors de l'exécution file /opt/local/lib/libxslt.dylib je reçois: /opt/local/lib/libxslt.dylib: Mach-O 64-bit dynamically linked shared library x86_64 comme cela est la même chose avec le libxslt.1.dylib.

Existe-t-il un moyen de résoudre ce problème et de rétablir les fichiers d'origine qui doivent avoir été remplacés?

Modifier: Si je devais obtenir une copie de ces bibliothèques à partir d'un autre Mac 10.6.8 64 bits et remplacer mes confuses avec ceux-ci, cela permettrait au moins de résoudre le problème de leur confusion.

Circule également [/usr/lib]$ ls | grep libxslt me donne:

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

Répondre

0

Avez-vous installé dans ou autrement remplacer les bibliothèques Apple fournies d'origine dans /usr/lib? Vous devriez jamais faire cela. Sinon, vous risquez de casser d'autres parties d'OS X qui dépendent de ces bibliothèques. Vous devez restaurer les bibliothèques d'origine à partir d'une sauvegarde ou réinstaller OS X. Si vous voulez des versions plus récentes, vous devez les installer ailleurs, comme dans /usr/local/lib. Ou mieux encore, vous devriez utiliser un gestionnaire de paquets tiers, comme Homebrew ou MacPorts; en fait, vous semblez utiliser MacPorts, à en juger par le chemin /opt/local/lib. Utilisez cela et ne modifiez pas les fichiers système dans /usr (autre que /usr/local) ou /System/Library.

+0

Je n'ai pas modifié manuellement l'un d'entre eux, mais j'ai l'impression que le CPAN a fait et a juste remplacé ceux qui existaient déjà; plutôt que de les désinstaller utiliserait simplement un autre fichier/usr/lib et le fusionner avec le mien, s'ils sont également sur la même version Mac? –

+0

Peut-être. Ça vaut le coup d'essayer. –

+0

La distribution XML-LibXSLT n'installe * pas * sa propre copie de libxslt, voir [Makefile.PL] (http://search.cpan.org/dist/XML-LibXSLT/Makefile.PL), et ne fournit que le Perl liaisons à la bibliothèque. [Matt C] (http://stackoverflow.com/u/1668803), si les bibliothèques système ont vraiment été remplacées, alors vous devez l'avoir obtenu ailleurs. – daxim

0

Ceci peut être pertinent: How to compile universal binaries on Mac OS X.

Je suis tombé sur ce même problème où j'avais recompilé libxslt et libxml pour soutenir les liaisons python, puis commencé à obtenir l'erreur /usr/lib/libxslt.1.dylib: mach-o, but wrong architecture et un plantage immédiat lors du démarrage des applications (Plus précisément Synergy, qui est un 32 bits/i386 app)

Je résolu ce problème en recompiler libxml2 et libxslt en utilisant ces configurer les options:

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

bibliothèques maintenant libxml2 et libxslt montrent des signes correctement sous forme de binaires universels:

$ 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 
Questions connexes