Das Problem ist, dass Apple Apache als eine fette Binärdatei baute, so dass es vier Architekturen unterstützt, so dass es nur Module laden wird, die als fette Binärdateien gebaut werden. Sie können die lipo
Dienstprogramm verwenden, um herauszufinden, wie etwas gebaut wurde:
lorien$ lipo -info /usr/sbin/httpd
Architectures in the fat file: /usr/sbin/httpd are: ppc7400 ppc64 i386 x86_64
Die Chancen stehen gut, dass Sie so etwas wie dies sehen:
lorien$ lipo -info /usr/libexec/apache2/modules/mod_dav_svn.so
Non-fat file: /usr/libexec/apache2/modules/mod_dav_svn.so is architecture: i386
Sie arch
verwenden können, um einen Befehl zu zwingen, in einer laufen Modus oder eine andere oder das lipo
Dienstprogramm, um die Binärdatei zu modifizieren und bestimmte Varianten auszublenden. Insgesamt ist es sehr mühsam, von Fall zu Fall zu entscheiden.
Die andere Möglichkeit besteht darin, alles in Fett-Binärdateien zu kompilieren, was ich in letzter Zeit gemacht habe. Mit autoconf-basierten Dingen (fast alles mit einem configure
Skript), können Sie in der Regel einen Großteil des Prozesses mit Umgebungsvariablen steuern. Ich habe eine Reihe von Skripten, die den Build-Prozess umhüllen, um sicherzustellen, dass sie richtig eingerichtet werden. Verwenden Sie die folgenden Befehle zum Neuaufbau von svn:
lorien$ cd ~/src/svn-1.6.2
lorien$ cat env-sh
ARCHFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64"
DEVPATH='/Developer/SDKs/MacOSX10.5.sdk'
CPPFLAGS="-isysroot $DEVPATH"
CFLAGS="$ARCHFLAGS $CPPFLAGS"
CXXFLAGS="$CFLAGS"
LDFLAGS="-Wl,-syslibroot,$DEVPATH $ARCHFLAGS"
MACOS_DEPLOYMENT_TARGET=10.5
export CFLAGS CXXFLAGS LDFLAGS MACOS_DEPLOYMENT_TARGET
lorien$ . env-sh
lorien$ ./configure ...
lorien$ make -j2
lorien$ lipo -info subversion/mod_dav_svn/.libs/mod_dav_svn.so
Architectures in the fat file: subversion/mod_dav_svn/.libs/mod_dav_svn.so are: ppc7400 ppc64 i386 x86_64
Ich behalte eine Kopie der Umgebung in meinem Home-Verzeichnis. Immer wenn ich etwas baue, kopiere ich env-sh
, bearbeite es nach Bedarf, beziehe es und baue es dann weg. Es gibt eine Menge mehr Informationen in den Tiefen von developer.apple.com
wie Tech Note 2137 und Universal Binary Programming Guidelines versteckt.
Viel Glück. Ich weiß, dass ich mich immer noch durch diesen Morast von Spaß navigiere.
Ich habe versucht, Ihre Schritte oben zu laufen, aber das resultierende mod_dav_svn.so ist immer noch i386, wenn ich Lipo mache. Ich habe das neueste SDK installiert (das, das mit dem iPhone 3.0-Kit geliefert wird). Alles, was Sie sagen, macht viel Sinn. Nur nicht, um es als etwas anderes als i386 zu bauen. – Geuis
Ich hatte Probleme mit einigen Paketen, die CFLAGS und LDFLAGS nicht an den richtigen Stellen verwendeten, aber Subversion bekam genau das richtige. Stellen Sie sicher, dass Sie eine 'make distclean' auf der obersten Ebene ausführen, bevor Sie das configure-Skript ausführen. Ich habe dies mit einem sauberen Abruf von svn-1.6.2 versucht und es funktionierte auf meinem MacBook Pro. Sie schauen sich die gebaute an und nicht die installierte, oder? –
Das war super hilfreich, danke. Als Nebenbemerkung musste ich den envvars/DYLD_LIBRARY_PATH-Trick machen, der hiernach erwähnt wird: http://www.thoughtspark.org/node/19 – leander