2012-07-28 6 views
6

Also wissen wir alle, dass Mountain Lion nicht mehr mit X11 ausgeliefert wird und Benutzer, die X11 benötigen, sind angewiesen, Xquartz herunterzuladen. Xquartz installiert zu /opt, aber es symbolisiert auch X11 und X11R6 zu /usr. Aber beim Erstellen von Software, die eine Verknüpfung zu X11-Include-Dateien erfordert, habe ich festgestellt, dass ich eine Umgebungsvariable übergeben muss, die /usr/X11/include (oder /opt/X11/include) zum Bibliothekssuchpfad hinzufügt, um ./configure zu finden, um die X11-Bibliotheken zu finden. Meine Frage ist warum?Warum findet OS X 10.8 Mountain Lion beim Erstellen von Software keine X11-Bibliotheken?

Ich habe einige der Forschung auf Google (zeigt viele Ergebnisse zurück zu Stack Overflow) getan, und ich habe Apples Dokumentation, und diese Quellen alle zeigen gelesen, dass es keine Entsprechung in OS X zu der gefundenen /etc/ld.so.conf Datei ist in viele (wenn nicht alle) Linux-Distributionen. Apple gibt sogar an, dass DYLD_LIBRARY_PATH standardmäßig leer ist. Unter Lion (mit Apples letztem "offiziellen" X11 installiert) würden die gleichen ./configure Skripts die X11-Bibliotheken finden, ohne etwas zum Bibliothekssuchpfad hinzuzufügen.

Also, warum kann nicht ./configure Skripte finden X11-Bibliotheken in Mountain Lion ohne explizite Änderung der Bibliothek Suchpfad?

+0

Was ist ein Beispiel für eine X11-Anwendung, die Sie konfigurieren möchten ... und die Ausgabe von configure? Wenn ich zum Beispiel [xpdf] (http://www.foolabs.com/xpdf/) herunterlade, finde ich meine X-Bibliotheken auf Mountain Lion und glaube nicht, dass ich etwas Besonderes gemacht habe (abgesehen von der Installation von XQuartz)). – Stennie

+0

Insbesondere Ruby 1.8.7. Sie können das Problem und die Lösung hier sehen: http: // stackoverflow.com/questions/11664835/mountain-lion-rvm-install-1-8-7-x11-fehler Wie ich in der ursprünglichen Frage gesagt habe, habe ich das Problem "behoben". Ich habe mich nur gefragt, ob jemand weiß, warum dieses Verhalten in Mountain Lion mit Xquartz anders ist als in Lion mit Apple X11. –

Antwort

1

mehr Fragen als vor einem Jahr ... aber als ich kam hier mit einem ähnlichen Problem ...

Beachten Sie, dass in der genannten Rubin Frage, es gab keinen Bibliothekssuchpfad modifiziert. Diese Lösung setzt nur eine Umgebungsvariable, die von vielen Makefiles als Flags für den C++ - Compiler aufgenommen wird. Dieses Beispiel definierte die Erstellungszeit -I ncludepath, d. H. Wo nach .h eaders - nicht Bibliotheken (die eine Option -L zu Ihrem Compiler/Linker gewesen wäre). Beide wären Bauzeit Optionen gewesen. Ob LD_LIBRARY_PATH oder DYLD_LIBRARY_PATH - beides sind Umgebungsvariablen, die vom dynamischen Linker unter Laufzeit berücksichtigt werden. (Weitere Informationen finden sich http://en.wikipedia.org/wiki/Dynamic_linker)

Ich habe keine vorge 10.8 Maschine zur Hand, aber denke, dass es vielleicht ein Symlink gewesen sein/usr/include/X11 ->/opt/X11/include/X11 - sonst ich habe keine Ahnung, wie atm es vorher gearbeitet haben könnte, dieselben Quellen unter der Annahme ...

Dies ist eine weitere mögliche Lösung für solche Probleme (nur fester meines realvnc Build):

$ autoconf 
$ ./configure 

so Ihre Frage "Warum?" Könnte schließlich beantwortet werden mit: Da Ihre Quellen ein "vorgefertigtes" configure-Skript enthielten, das auf älteren Autotools basierte, die /opt/X11/include nicht als möglichen Ort für die Suche nach X11-Includes enthielten oder einfach nicht bekamen der oben genannten Kompilierzeit Flags direkt auf Ihrem aktuellen System. Ich habe autoconf durch Homebrew installiert - ahh, tolle Sachen, Prost.