{"id":194,"date":"2006-08-24T11:50:56","date_gmt":"2006-08-24T09:50:56","guid":{"rendered":"http:\/\/www.tupperclub.de\/blog\/?p=194"},"modified":"2006-08-25T10:56:17","modified_gmt":"2006-08-25T08:56:17","slug":"rsync-kompiliert-auch-mit-xcode","status":"publish","type":"post","link":"https:\/\/www.tupperclub.de\/blog\/?p=194","title":{"rendered":"rsync kompiliert auch mit XCode"},"content":{"rendered":"<p>Wie ich bereits angedeutet habe, bin ich im Moment dabei \u00c4nderungen an rsync vorzunehmen und ein paar Patches in die aktuelle Version zu integrieren. Wie fast alle Unix-Tools wird rsync mit dem \u00fcblichen <code>configure && make && sudo make install<\/code> kompiliert. Dies ist jedoch unpraktisch, wenn man die Anwendung aus XCode heraus starten und v.a. debuggen will.<br \/>\n<!--more--><br \/>\nFolgende Schritte sind n\u00f6tig, um rsync in XCode zu kompilieren:<\/p>\n<ol>\n<li>Download und entpacken des rsync-Sourcecodes<\/li>\n<li>Anlegen eines neuen XCode Projekts (C, Kommandozeilentool)<\/li>\n<li><code>.\/configure<\/code> aufrufen, um <code>config.h<\/code> zu erzeugen<\/li>\n<li>Alle n\u00f6tigen Source-Dateien in das XCode Projekt einf\u00fcgen. Achtung: Nicht alle C-Sourcefiles werden zum kompilieren ben\u00f6tigt. Es sind nur die im unter <code>$OBS1<\/code>, <code>$OBS2<\/code>, <code>$OBS3<\/code> und <code>$DAEMON_OBS<\/code> aufgef\u00fchrten Dateien n\u00f6tig. Zus\u00e4tzlich dazu habe ich als Source die ben\u00f6tigten Dateien aus den Unterverzeichnissen libs, popt und zlib eingef\u00fcgt.<\/li>\n<li>Da ich zus\u00e4tzlich den iconv-Patch einspielen m\u00f6chte, mu\u00df rsync gegen die libiconv gelinkt werden. Daf\u00fcr \u00f6ffnet man im Baum unter Targets den Punkt &#8222;Link Binary With Libraries&#8220; und f\u00fcgt eine existierende Datei hinzu. Das ist unn\u00f6tig kompliziert: Finder \u00d6ffnen, im Men\u00fc &#8222;Gehe zum Ordner&#8230;&#8220; ausw\u00e4hlen und in den Dialog <code>\/usr\/lib<\/code> eingeben. Man zieht dann den lib-Ordner in den Dateidialog von XCode, um dort das normalerweise versteckte <code>\/usr\/lib<\/code>-Verzeichnis anzuzeigen. Schlie\u00dflich w\u00e4hlt man die <code>libiconv.dylib<\/code> aus.<\/li>\n<li>In den Infos des entsprechenden Compiler-Targets mu\u00df unter &#8222;Preprocessing&#8220; noch als &#8222;Preprocessor Macros&#8220; den Wert <code>HAVE_CONFIG_H<\/code> eintragen.<\/li>\n<p><!--\t\n\n<li>Unter \"Executables\" (im Baum) w\u00e4hlt man \"Get Info\". Im Tab \"Debugging\" mu\u00df man noch auf \"Use System Console for standard input\/output\" umstellen, da sonst rsync nicht funktioniert. -->\n<\/ol>\n<p>Danach mu\u00df man nur noch den Source patchen (hier mit dem iconv Patch und dem extended attributes patch) und kompilieren. Wenn man sicher sein m\u00f6chte, da\u00df man alle Abh\u00e4ngigkeiten ordentlich erschlagen hat, kann man in den Einstellungen des Compilers noch ZeroLink deaktivieren. Dadurch werden alle vom Linker nicht gefundenen Symbole schon beim Compilieren angezeigt, nicht erst wenn die Anwendung ausgef\u00fchrt wird.<\/p>\n<p>Unverst\u00e4ndlich ist f\u00fcr mich, warum es so kompiliziert ist, Bibliotheken zu verlinken. An dieser Stelle h\u00e4tte ich erwartet, schon ein Auswahlmen\u00fc mit den Standard-Verzeichnissen pr\u00e4sentiert zu bekommen, um m\u00f6glichst schnell die ben\u00f6tigte Bibliothek einf\u00fcgen zu finden. Das ist eine der wenigen Stellen von XCode, die etwas aufpoliert werden sollte\u2026<\/p>\n<p>Leider l\u00e4\u00dft sich rsync nicht lokal debuggen \u2013 es gibt dabei Probleme mit den Filedeskriptoren (beim Lesen kommt EOF zur\u00fcck). Ein Workaround ist, rsync \u00fcber ssh als Transport zu verwenden. Mit einem Schl\u00fcssel ohne Pa\u00dfwort und einem dazu passenden Eintrag in den <code>authorized_keys2<\/code> klappt das auch im Debugger.<\/p>\n<p><em>Vielen Dank an Simon Br\u00fcckner f\u00fcr den Tipp, wie man die Library verlinkt (kommt urspr\u00fcnglich von <a href=\"http:\/\/ozy.student.utwente.nl\/programming\/mac-os-x\/\">dieser Seite<\/a>).<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wie ich bereits angedeutet habe, bin ich im Moment dabei \u00c4nderungen an rsync vorzunehmen und ein paar Patches in die aktuelle Version zu integrieren. Wie fast alle Unix-Tools wird rsync mit dem \u00fcblichen configure &#038;&#038; make &#038;&#038; sudo make install kompiliert. Dies ist jedoch unpraktisch, wenn man die Anwendung aus XCode heraus starten und v.a. [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11],"tags":[],"class_list":["post-194","post","type-post","status-publish","format-standard","hentry","category-mac-os-x"],"_links":{"self":[{"href":"https:\/\/www.tupperclub.de\/blog\/index.php?rest_route=\/wp\/v2\/posts\/194","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tupperclub.de\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tupperclub.de\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tupperclub.de\/blog\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tupperclub.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=194"}],"version-history":[{"count":0,"href":"https:\/\/www.tupperclub.de\/blog\/index.php?rest_route=\/wp\/v2\/posts\/194\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.tupperclub.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=194"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tupperclub.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=194"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tupperclub.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=194"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}