2016-09-16 14 views
16

Ich habe gerade auf Xcode 8 aktualisiert, und ich kann nicht mehr xml2-basierte Anwendungen erstellen. Wenn ich eine einfache Datei erstellen und versuchen, es zu bauen, wie folgt:libsystem_symptoms.dylib fehlt in Xcode 8

c++ myapp.cc `xml2-config --cflags` `xml2-config --libs` 

... Ich erhalte die folgende Fehlermeldung:

ld: file not found: /usr/lib/system/libsystem_symptoms.dylib for architecture x86_64 

Es spielt keine Rolle, was in myapp.cc ist (meine ist nur eine Hauptroutine, die 0 zurückgibt. Das Grundproblem scheint zu sein, dass Apple /usr/lib/system/libsystem_symptoms.dylib in Xcode 8 entfernt hat, aber viele der .tbd Dateien in /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/ SDKs/MacOSX10.12.sdk/usr/lib verweisen immer noch darauf. Ist sonst noch jemand auf ein solches Problem gestoßen?

+0

Ich habe einen temporären Fix der Symlinking /usr/lib/system/libsystem_symptoms.dylib zu /usr/lib/libSystem.dylib getan und es sieht so aus, dass dies die Builds funktionieren kann. Es ist natürlich keine richtige Lösung, aber ein Temp-Fix, der es ermöglicht, Sachen zu bauen, bis die wirkliche Lösung kommt. Sie müssten SIP vorher deaktivieren (es gibt eine Menge Informationen online, wie man es macht). – StasM

Antwort

3

Dies ist ein XCode 8-Fehler.

Während Sie auf eine ordnungsgemäße Fehlerbehebung von Apple warten, entfernt der folgende Befehl den Verweis auf die fehlende Bibliothek aus den tbd-Dateien.

Ich weiß nicht, ob es für jede Art von Build funktioniert, aber es repariert alles funktionierte nicht für mich.

+0

Ich habe dies versucht und gehen Sie die folgenden Fehler: grep: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/lib: keine solche Datei oder Verzeichnis sed : : Datei oder Verzeichnis existiert nicht. Irgendwelche Gedanken? Das Verzeichnis/usr/lib existiert (es läuft die gleiche Version von macOS) – Sanfly

+0

vielleicht ist der sdk Pfad anders. Suchen Sie nach TDB-Dateien im Ordner /Applications/Xcode.app. – mnencia

+0

Dies hat alle richtigen Dateien gefunden, aber die Ersetzung hat nicht funktioniert - die Backup-Dateien waren die gleichen wie die geänderten Dateien. –

2

Ein "Fix", den ich verwendet habe, der jede Verwendung von sudo vermeidet, ist einfach die -L-/Anwendungen/Xcode.app/Inhalt/Entwickler/Plattformen/MacOSX.platform/Entwickler/SDKs/MacOSX10.12.sdk/usr/lib-Markierung. In einem GNU-Makefile kann dies mit dem Befehl filter-out gemacht werden. Also, wenn ich eine LINK_LIBS Variable bauen, die (xml2-config --libs Shell) $ enthält, dann kann ich LINK_LIBS Filter mit dem folgenden Befehl ein:

LINK_LIBS := $(filter-out -L$(shell xcrun --show-sdk-path)/usr/lib, $(LINK_LIBS)) 

Wenn ich gerade bin xml2-config verwenden, kann ich auch nur ein „--exec-prefix =/usr“ Argument hinzu, wenn es ruft:

c++ myapp.cc `xml2-config --cflags` `xml2-config --exec-prefix=/usr --libs` 

ich weiß nicht, was mögliche Nebenwirkungen des SDK-Pfad aus der Bibliothek Suchtext zu entfernen könnte, aber für Jetzt scheinen diese Lösungen für alle meine Anwendungen zu funktionieren.

1

@ mnencia die Antwort fast arbeitete für mich, aber der Befehl sed ersetzt nichts in den TLB-Dateien - die Sicherungen waren die gleichen wie die geänderten Dateien.

lief ich diesen Teil seines Kommandos: grep -ril /usr/lib/system/libsystem_symptoms.dylib /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/lib

, die die Dateien verweisen, die entfernt Bibliothek identifiziert und modifiziert sie mit der Hand.

YMMV

14

@mnencia Antwort arbeitet Verweise auf libsystem_symptomps.dylib entfernen, aber nicht für mich OS mit X. folgende Änderung soll es erlauben, auf OS X zu arbeiten:

sudo /usr/bin/sed -i.backup -E -e '[email protected]/usr/lib/system/libsystem_symptoms.dylib(,)[email protected]@' \ 
$(grep -ril /usr/lib/system/libsystem_symptoms.dylib \ 
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/lib) 

Hoffnung Das hilft Mac-Entwicklern.

3

Bis sich Xcode8 stabilisiert, behalte ich Xcode7.3, umbenannt als

/Applications/Xcode7.3.app/

Im Allgemeinen ich Xcode8 verwenden, die

/Applications/Xcode.app/

in

ist aber, wenn Fehler wie diesem zu begegnen, habe ich die Möglichkeit,

sudo xcode-select -switch /Applications/Xcode7.3.app/

Dies behob den Fehler

ld: file not found: /usr/lib/system/libsystem_symptoms.dylib for architecture x86_64

für mich, wenn man versuche, ein R-Paket zu installieren:

> install.packages('clickstream')

0

Für all unbequem mit Referenzen aus verschiedenen Orten zu libsystem_symptoms.dylib Strippen, kam ich mit einer anderen Lösung, die das Gegenteil ist Entfernen von Referenzen - Hinzufügen eines falschen leeren libsystem_symptoms.dylib in /usr/lib/system!

mkdir ~/src/libempty 
cd ~/src/libempty 
touch empty.c 
cc -dynamiclib empty.c -o libempty.dylib 
sudo cp libempty.dylib /usr/local/lib/libempty.dylib 
cd /usr/lib/system 
sudo ln -s /usr/local/lib/libempty.dylib libsystem_symptoms.dylib 

Außer ..., dass im letzten Schritt nicht funktioniert, weil von OS X/macOS System Integrity Protection.

Es gibt anscheinend mehr als eine Möglichkeit, das zu umgehen; Sie können es mit csrutil deaktivieren und neu starten (siehe die Frage Operation Not Permitted when on root El capitan). Ich will es nicht wirklich deaktivieren (oder vergessen es wieder einschalten), so dass ich gebootet in recovery mode und öffnete dann ein Terminalfenster und beendet den Job so:

cd /Volumes 
cd MyHardDrive 
cd usr/lib/system 
ln -s ../../local/lib/libempty.dylib libsystem_symptoms.dylib 

Bevor Sie dies tun, ich versuchte, PostgreSQL 9.6 auf El Capitan zu erstellen, und bekam diesen Linker-Fehler ("ld: file not found: /usr/lib/system/libsystem_symptoms.dylib") bei der configure Schritt, wenn es für die Readline oder Zlib-Bibliotheken überprüft. Danach konfigurierte und baute PostgreSQL reibungslos!