Jan 19

iPhone SDK: Xcode als iPhone Entwicklungsumgebung (IDE) unter Leopard.

Kategorie: Anleitungen / Dokusholeg

Damit man überhaupt für das iPhone Programme schreiben kann, benötigt man einige Werkzeuge. Dies wären ein Compiler und Linker, sowie die benötigen Libraries und Header-Dateien. Diese Werkzeuge, in iPhone Developer Kreisen auch als "toolchain" bezeichnet, kombiniert mit einem guten Text Editor und anderen nützlichen Funktionen, bezeichnet man als Entwicklungsumgebung, auch IDE (integrated development environment) genannt. Unter OS X gibt es mit Xcode eine kostenlose IDE, welche durch Templates erweiterbar ist, so dass man damit problemlos iPhone Applikationen erstellen kann. Wie das im einzelnen geht möchte ich hier Schritt für Schritt erklären. Bevor es allerdings losgeht müssen folgende Voraussetzungen erfüllt sein:

  • Mac mit OS X 10.5.1 (Leopard) oder höher. Dieses Tutorial funktioniert nicht mit 10.4.x (Tiger) oder kleiner!
  • Xcode 3.0 (Unbedingt die neuste Version verwenden!)
  • X11
  • X11 SDK
  • Mac OS X 10.4.x SDK
  • Subversion Client (SVN)
  • Zeit und Geduld :-)

In dieser Anleitung ist der Terminal Dein Freund, dh. in jedem Schritt müssen Befehle im Terminal eingegeben werden. Diese Befehle werden in blauer Schrift dargestellt. In manchen Fällen wird auch noch die Ausgabe mit dazugeschrieben. Diese wird dann in grauer Schrift dargestellt. Bei vielen Tutorials wird oft ein Prompt vor jede Zeile gestellt ($, >, C:\). Darauf möchte ich aber verzichten, damit man sich den Code einfacher kopieren kann. Beispiel:

echo "Hallo Welt" 
Hallo Welt

So, nun gehts aber los:

1. Vorbereitung

1.1. PATH Umbegungsvariable überprüfen.

Damit die folgenden Befehle alle funktionieren muss /usr/local/bin in der PATH Umgebungsvariablen eingetragen sein. Dies kontrolliert man am besten mit dem Terminal:

echo $PATH 
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

Wenn /usr/local/bin nicht in PATH eingetragen ist, muss folgender Befehl eingegeben werden:

PATH=$PATH:/usr/local/bin

Nun merkt sich das Terminal für die gerade offene Session den neuen PATH. Wenn man allerdings ein neues Terminalfenster öffnet, dann muss der Befehl erneut eingegeben werden.

1.2. Arbeitsumgebung erstellen.

Es empfiehlt sich auf seinem Mac einen Arbeitsordner zu erstellen, in den alle benötigten und erzeugten Dateien bzw. Ordner gespeichert werden. Bei mir ist das ~/iphonedev

mkdir ~/iphonedev

1.3. In den Arbeitsordner wechseln.

Alle folgenden Befehle werden ausgehend von der Arbeitsumgebung ausgeführt. Daher muss man nun in den Arbeitsordner wechseln.

cd ~/iphonedev

2. Kopie des iPhone Dateisystems erzeugen.

Dieses muss aus der Firmware-Datei extrahiert und entschlüsselt werden. Achtung!! Das Entschlüsseln der Firmware ist in diversen Ländern illegal. Man sollte sich also vorher informieren bevor man fortfährt!

2.1. Firmware-Datei runterladen und entpacken

curl -O http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPod/SBML/osx/bundles/061-4036.20071107.9g3DF/iPod1,1_1.1.2_3B48b_Restore.ipsw
mkdir fw112
mv iPod1,1_1.1.2_3B48b_Restore.ipsw fw112/iPod1,1_1.1.2_3B48b_Restore.zip
pushd fw112
unzip iPod1,1_1.1.2_3B48b_Restore.zip
popd

2.2. vfdecrypt runterladen

Unter http://rapidshare.com/files/40981513/vfdecrypt.zip.html vfdecrypt runterladen und in seinem Arbeitsordner entpacken.

2.3. vfdecrypt ausführbar machen

sudo chmod 755 vfdecrypt

2.4. iPhone Dateisystem mit vfdecrypt entschlüsseln

pushd fw112
../vfdecrypt -i 022-3724-1.dmg -o decrypted.dmg -k 70e11d7209602ada5b15fbecc1709ad4910d0ad010bb9a9125b78f9f50e25f3e05c595e2
popd

2.5. Das entschlüsselte Dateisystem mit dem Finder mounten

Die Warnung dass das Image möglicherweise beschädigt ist kann ignoriert werden. Nach dem mounten hat man nun ein Volume mit dem Namen "Oktoberfest3B48b.N45Bundle"

3. Toolchain einrichten.

Damit man Binärcode für das iPhone erzeugen kann benötigt man einen Compiler und einen Linker. Das iPhone benutzt keinen PPC- oder Intel-Prozessor ein, sondern einen ARM-Prozessor, dessen Code sich von den anderen Desktop-Prozessoren unterscheidet. Xcode liefert leider noch keinen geeigneten Compiler mit, sodass man sich selbst einen kompilieren muss.

3.1. LLVM Compiler-Framework kompilieren

Wegen Fehlern in der Toolchain muss Revision 42498 ausgecheckt werden.

svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm-svn -r 42498
pushd llvm-svn
./configure --enable-optimized
make ENABLE_OPTIMIZED=1
sudo make install
LLVMOBJDIR=`pwd`
popd

3.2. iphone-dev SVN Respository auschecken:

svn checkout http://iphone-dev.googlecode.com/svn/trunk/ iphone-dev
pushd iphone-dev

3.3. Ordner für die Werkzeuge (toolchain) erzeugen

sudo mkdir /usr/local/arm-apple-darwin

3.4. odcctools kompilieren

mkdir -p build/odcctools
pushd build/odcctools
../../odcctools/configure --target=arm-apple-darwin --disable-ld64
FORHDRS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk"
make
sudo make install
popd

Falls es Fehler beim kompilieren gab, dann bitte folgendes versuchen:

mkdir -p build/odcctools
pushd build/odcctools
../../odcctools/configure --target=arm-apple-darwin --disable-ld64
export INCPRIVEXT="-isysroot /Developer/SDKs/MacOSX10.4u.sdk"
make
sudo make install
popd

3.5. Das Dateisystem in /usr/local/share/iphone-filesystem kopieren

sudo mkdir /usr/local/share
sudo mkdir /usr/local/share/iphone-filesystem
sudo cp -R /Volumes/Oktoberfest3B48b.N45Bundle/* /usr/local/share/iphone-filesystem

3.6. Der Variable HEAVENLY den Pfad des Dateisystems zuweisen

export HEAVENLY=/usr/local/share/iphone-filesystem

3.7. Die iPhone Headers installieren

pushd include
sudo chmod 755 /usr/local/arm-apple-darwin
./configure --with-macosx-sdk=/Developer/SDKs/MacOSX10.4u.sdk
chmod 755 install-headers.sh
sudo bash install-headers.sh
popd

3.8. csu installieren

csu enthält crt1.o, dylib1.o, und bundle1.o. Es wird empfohlen csu nicht selbst zu kompilieren, da man dafür einen funktionierenden cross-GCC benötigen würde. Das iphone-dev Team stellt daher ein Binary zur Verfügung-

mkdir -p build/csu
pushd build/csu
../../csu/configure --host=arm-apple-darwin
sudo make install
popd

3.9. Leopard Workarround

Damit die Toolchain unter Leopard funktioniert, muss ein unschöner Workarround durchgeführt werden. Leider gibt es dadurch später jedes mal eine non-critical Warnung wenn man ein iPhone Programm kompiliert.

mv llvm-gcc-4.0-iphone/configure llvm-gcc-4.0-iphone/configure.old
sed 's/^FLAGS_FOR_TARGET=$/FLAGS_FOR_TARGET=${FLAGS_FOR_TARGET-}/g' llvm-gcc-4.0-iphone/configure.old > llvm-gcc-4.0-iphone/configure
sudo chmod 755 llvm-gcc-4.0-iphone/configure
export FLAGS_FOR_TARGET="-mmacosx-version-min=10.1"
sudo ln -s /usr/local/arm-apple-darwin/lib/crt1.o /usr/local/arm-apple-darwin/lib/crt1.10.5.o
sudo ln -s /usr/local/arm-apple-darwin/lib/dylib1.o /usr/local/arm-apple-darwin/lib/dylib1.10.5.o

3.10. LLVM-GCC konfigurieren und kompilieren

Bei diesem Schritt ist es wichtig dass die Variablen LLVMOBJDIR (Schritt 3.1) und HEAVENLY (3.8) gesetzt sind. Falls zwischendurch das Terminalfenster geschlossen wurde, muss man die Variablen neu setzen. Mit dem Befehl echo kann man sich die Variablen anzigen lassen:

echo $LLVMOBJDIR 
/usr/local/share/iphone-filesystem
echo $HEAVENLY
/Users/YourUserName/iphonedev

Wenn die Variablen nicht gesetzt sind müssen sie neu gesetzt werden:

HEAVENLY=/usr/local/share/iphone-filesystem
LLVMOBJDIR=~/iphonedev/llvm-svn

Wenn der echo Test erfolgreich verlaufen ist, dann kann man den llVM-GCC nun kompilieren:

mkdir -p build/llvm-gcc-4.0-iphone
pushd build/llvm-gcc-4.0-iphone
../../llvm-gcc-4.0-iphone/configure --enable-llvm=`llvm-config --obj-root` --enable-languages=c,c++,objc,obj-c++ --target=arm-apple-darwin --enable-sjlj-exceptions --with-heavenly=$HEAVENLY --with-as=/usr/local/bin/arm-apple-darwin-as --with-ld=/usr/local/bin/arm-apple-darwin-ld
make LLVM_VERSION_INFO=2.0-svn-iphone-dev-0.3-svn
sudo make install
popd
popd

[UPDATE]: 3.11. Cocoa.h anlegen

In vielen Codebeispielen und Cocoa Libs findet man immer wieder die include Anweisung:

#import <Cocoa/Cocoa.h>

Da die Datei Cocoa.h bei den Headern des Toolchains nicht vorhanden ist, nimmt der Compiler an dass es sich um die Cocoa.h von OS X handelt. In dieser Cocoa.h werden aber Header vom AppKit Framework eingebunden, was wiederum zu einem Fehler beim kompilieren führt, da die iPhone Firmware das AppKit Framework nicht kennt. Aus diesem Grunde muss man sich eine eigene Cocoa.h Header-Datei mit folgendem Inhalt erstellen:

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

Diese Datei speichert man am besten auf dem Desktop ab und führt dann folgende Befehle aus:

sudo mkdir /usr/local/arm-apple-darwin/include/Cocoa
sudo mv ~/Desktop/Cocoa.h /usr/local/arm-apple-darwin/include/Cocoa/Cocoa.h

Die Toolchain ist nun fertig eingerichtet. Nun kann man per Hand bzw. Makefile Binaries fürs iPhone kompilieren. Da wir aber mit Xcode entwickeln wollen, müssen wir noch ein Xcode Template installieren.

4. Xcode Template installieren

Lucas Newman entwickelte das Original Template für die alte Toolchain, Ben S. Stahlhood passte es an die neue Toolchain an und erweiterte es um eine automatische Deploymentfunktion per SSH.

4.1. Template herunterladen.

Das Template hier herunterladen und entpacken.

4.2. Template installieren

Den Ordner iPhone UIKit Application nach /Developer/Library/XCode/Project Templates/Application/ kopieren

4.3. SSH einrichten

Damit Xcode das fertige Programm automatisch zu iPhone übertragen kann, muss man noch SSH einrichten. Falls noch nicht geschehen muss man das BSD Subsystem und Open SSH über den Installer des iPhones installieren. Über das Terminal auf dem Mac folgendes eingeben:

ssh-keygen

Wenn die Eingabeaufforderung "Enter file in which to save the key" erscheint, einfach nur die Enter Taste drücken. Danach das gewünschte Password eingeben.

cd ~/.ssh
cat id_rsa.pub >> authorized_keys

Nun muss man sich per SSH mit dem iPhone verbinden.

mkdir ~/.ssh

Und die eben erzeugte Datei "authorized_keys" (liegt in ~/.ssh auf dem Mac) ins ~/.ssh Verzeichnis des iPhone kopieren.

scp ~/.ssh/authorized_keys root@<IP-DES-IPHONES>:.ssh/authorized_keys

Auf dem iPhone folgendes ausführen:

chmod 755 /var/root
chmod 700 /var/root/.ssh
chmod 644 /var/root/.ssh/authorized_keys

4.4. Umgebungsvariable IPHONE_IP am Mac setzen

mkdir ~/.MacOSX

Nun muss man den Property List Editor starten (liegt in /Developer/Applications/Utilities) und ein Child mit dem Namen "IPHONE_IP", der Klasse "String" und als Value die IP seines iPhone eintragen. Das Ganze dann als ~/.MacOSX/environment.plist speichern und den Mac neu starten.

5. Fertig

In Xcode findet man nun beim Erstellen eines neuen Projekts den Punkt "iPhone UIKit Application". Das leere Projekt sollte sich ohne Probleme kompilieren lassen. Nach dem kompilieren fragt Xcode nach dem iPhone Password, welches unter 4.3. eingegeben wurde. Wenn man das Password eingegeben hat, wird Xcode das fertige Programm gleich zum iPhone kopieren und das Springboard neu starten.

Bitte folgendes beachten:

Viele Beispiele, welche man sich aus dem Internet geladen hat und ein Makefile dabei ist, lassen sich mit der neuen Toolchain nicht kompilieren. Man muss dazu die Makefiles wie folgt ändern:

"CC=/usr/local/arm-apple-darwin/bin/gcc" in "CC=/usr/local/bin/arm-apple-darwin-gcc -v" änden.
"CC=/usr/local/arm-apple-darwin/bin/g++" in "CXX=/usr/local/bin/arm-apple-darwin-g++" ändern

"-Wl,-syslibroot,/usr/local/arm-apple-darwin/heavenly" von LDFLAGS entfernen um den
"-syslibroot: multiply specified" Fehler zu vermeiden.

Ich werde demnächst weitere Anleitungen posten, welche auf die eigentliche Programmierung eingehen werden. Bis dahin, viel Spass beim Experimentieren mit dem neuen iPhone SDK.

72 Kommentare zu “iPhone SDK: Xcode als iPhone Entwicklungsumgebung (IDE) unter Leopard.”

  1. Iphone » Blog Archive » iPhone SDK: Xcode als Entwicklungsumgebung (IDE) fürs iPhone unter Leopard. sagt:

    […] iPhone-dev.de wrote an interesting post today on iPhone SDK: Xcode als Entwicklungsumgebung (IDE) fürs iPhone unter Leopard.Here’s a quick excerpt … ake LLVM_VERSION_INFO=2. 0-svn-iphone-dev-0. 3-svn sudo make install popd popd… … echo $LLVMOBJDIR /usr/local/share/iphone-filesystem echo $HEAVENLY /Users/YourUserName/iphonedev… … sudo mkdir /usr/local/share sudo mkdir /usr/local/share/iphone-filesystem sudo cp -R /Volumes/Oktoberfest3B48b….. /. . /llvm-gcc-4. 0-iphone/configure –enable-llvm=`llvm-config –obj-root` –enable-languages=c,c++,objc,obj-c++ –target=arm-apple-darwin –enable-sjlj-exceptions -… […]

  2. iPhone-dev.de » Das erste eigene iPhone Programm: Hello World sagt:

    […] habe ich eine Anleitung geschrieben wie man mit dem hier vorgestelltem SDK sein erstes "Hello World Programm" erstellt. Diese Anleitung ist für alle die sich mit […]

  3. Holle sagt:

    hey tolles tutorial…
    mehr davon…

  4. Maxi sagt:

    Hey, Klasse Tutorial! Bloß…das klappt bei mir alles nicht. Könnt ihr mir vllt den X-Code-Ordner zusenden oder so ähnlich! Auf jeden FAll brauch ich eure Hilfe! Meldet euch bei mir!!!

  5. holeg sagt:

    Das mit dem zusenden ist nicht so einfach, da die Toolchain an diversen Orten im Filesystem installiert ist und ich nicht 100% genau sagen kann welche Dateien gebraucht werden. Bei welchem Schritt klappt was bei Dir nicht? Welche Fehlermeldungen werden angezeigt?

  6. Maxi sagt:

    Bei Punkt 2.4 erscheint folgendes: Aber es wird kein Volume erstellt!!!

    sig encrcdsa
    blocksize 4096
    datasize 124087479
    dataoffset 122880
    keyDerivationAlgorithm 0
    keyDerivationPRNGAlgorithm 0
    keyDerivationIterationCount 0
    keyDerivationSaltSize 0
    keyDerivationSalt

    blobEncryptionIVSize 0
    blobEncryptionIV

    blobEncryptionKeySizeInBits 0
    blobEncryptionAlgorithm 0
    blobEncryptionPadding 0
    blobEncryptionMode 0
    encryptedBlobSize 0
    encryptedBlob
    maxi-kraigs-macbook:fw112 maxikraig$ popd

    Punkt 2.5 versteh ich nicht! Muss ich da etwas machen???

    Bei Schritt 3.1 Kommt folgende Fehlermeldung

    *** No rule to make target `/Makefile.rules’. Stop.

    Diese Beiden kommen bei 3.4:

    *** No targets specified and no makefile found. Stop.

    *** No rule to make target `install’. Stop.

    Und bei 3.8 kommt:

    *** No rule to make target `install’. Stop.

    Und das hier wenn ich GCC letztendlich kompilieren will:

    *** No targets specified and no makefile found. Stop.

    *** No rule to make target `install’. Stop.

  7. holeg sagt:

    2.4 Nach dem Vorgang wird auch kein Volume erstellt, sondern ein Disc Image, welches Du noch mounten musst, Das Disc Image hat den Namen decrypted.dmg und sollte sich im fw112 Ordner befinden, Um das Disc Image zu mounten einfach doppelklicken.

    2.5. s.o.

    3.1. Hmm, normalerweise kommt die Meldung “** No rule to make target” wenn es entweder kein Makefile gibt und das kommt oft wenn man das ./configure vergisst, bzw. wenn es fehlschlägt. Hast Du die Befehle wirklich genau so wie in der Anleitung eingegeben? Am besten Zeile für Zeile. Probier einfach nochmal den Schritt 3.1 zu wiederholen. Lösch aber vorher den llvm-svn Ordner. Wichtig ist auch, dass Du die neusten Developer Tools installiert hast und das Ganze unter Leopard ausführst.

    3.4 Sieht so aus als ob es kein Makefile gibt. Wahrscheinlich kein configure ausgeführt.

    3.8 Braucht den llvm von Punkt 3.1

    Wichtig bei der Anleitung ist, dass die Befehle auch im richtigen Ordner ausgeführt werden. Einmal ein pushd oder popd vergessen und schon ist man vielleicht ganz wo anders.

  8. Maxi sagt:

    Danke dass du mir so schnell geantwortet hast! Ich werds ausprobieren!!! Superfettes Dankeschööööööööööön!

  9. Maxi sagt:

    3.1 funktioniert immer noch nicht:*** No rule to make target `/Makefile.rules’. Stop.
    Aber ich habe den Code genauso eingegeben!
    3.4 geht auch noch nich! Auch hier habe ich wieder genau den selben Code eingegeben!

  10. holeg sagt:

    Befindet sich in Deinem llvm-svn Ordner die Datei “Makefile.rules” ?

  11. Maxi sagt:

    JOP!

  12. holeg sagt:

    Probier mal folgendes:

    cd ~/iphonedev/llvm-svn
    ./configure –enable-optimized

    Was passiert dann?

    Edit: Achtung vor dem enable-optimized befinden sich 2 Minus (”-”) Zeichen. Sieht hier aus wie eins!

  13. Maxi sagt:

    configure: WARNING: you should use –build, –host, –target
    configure: WARNING: invalid host type: –enable-optimized
    checking build system type… Invalid configuration `–enable-optimized’: machine `–enable’ not recognized
    configure: error: /bin/sh autoconf/config.sub –enable-optimized failed

    Das steht da dann

  14. holeg sagt:

    probier mal folgendes:

    cd ~/iphonedev/
    pushd llvm-svn
    sudo bash ./configure –enable-optimized
    sudo make ENABLE_OPTIMIZED=1
    sudo make install
    export LLVMOBJDIR=`pwd`
    popd

  15. Maxi sagt:

    Ich verzweifle noch dran:
    configure: WARNING: you should use –build, –host, –target
    configure: WARNING: invalid host type: –enable-optimized
    configure: WARNING: Unknown project (.svn) won’t be configured automatically
    checking build system type… Invalid configuration `–enable-optimized’: machine `–enable’ not recognized
    configure: error: /bin/sh autoconf/config.sub –enable-optimized failed

  16. Maxi sagt:

    HELFT MIR!!!

  17. holeg sagt:

    So wie es aussieht ist das Problem mit die Kommentarfunktion, welche aus zwei “-” (Minus) einen Bindestrich gemacht hat. Wenn ich den Befehl per copy paste aus dem Kommentar kopiere, bekomme ich den selben Fehler. Allerdings nur bei den Befehlen aus dem Kommentar. Die Befehle von der Anleitung unter 3.1 kann ich problemlos bei mir per copy paste rüberkopieren und alles läuft durch.

    Wie es aussieht ersetzt Wordpress die beiden Minus Zeichen nur, wenn der svn Befehl am Anfang steht. Probier mal folgendes:


    cd ~/iphonedev
    pushd llvm-svn
    sudo bash ./configure --enable-optimized
    sudo make ENABLE_OPTIMIZED=1
    sudo make install
    export LLVMOBJDIR=`pwd`
    popd

    Hoffe der Code ist nicht wieder zerfetzt. Wichtig ist dass vor enable-optimized zwei Minuszeichen stehen!!

    [Edit] Sieht gut aus mit den Minuszeichen :-)

  18. Maxi sagt:

    MIST!!! Das klappt immer noch nicht! Woran könnte das liegen? Was soll ich noch machen???configure: WARNING: Unknown project (.svn) won’t be configured automatically
    checking build system type… i686-apple-darwin9.0.0
    checking host system type… i686-apple-darwin9.0.0
    checking target system type… i686-apple-darwin9.0.0
    checking type of operating system we’re going to host on… Darwin
    checking target architecture… x86
    checking for gcc… gcc
    checking for C compiler default output file name… configure: error: C compiler cannot create executables
    See `config.log’ for more details.

  19. holeg sagt:

    was steht denn im config.log ?

  20. holeg sagt:

    Habe gerade bemerkt dass Du noch eine ältere Leopard Version hast (Darwin 9.0.0). Ich habe bei mir 10.5.1(Darwin 9,1,0) installiert. Ich würde an Deiner Stelle mal Dein System updaten! Und ganz ganz wichtig ist, dass Du Dir wirklich die neusten Developer Tools installiert hast. Die bekommst Du nur bei der Developer Site bei Apple unter: http://developer.apple.com/ Du brauchst aber einen Account dort, ist kostenlos. Die Developer Tools auf der Leopard DVD sind veraltet und der Build wird damit nicht funktionieren!

  21. Maxi sagt:

    OK! Ich kümmere mich mal drum und schreibe dir dann wieder!

  22. Maxi sagt:

    Nothing to be done for `install’.

    bei 3.1 und

    make[1]: *** [ar] Error 1
    make: *** [install] Error 1

    bei 3.4^^

  23. Maxi sagt:

    OH MAN! Gibt es noch irgendwas was ich tun kann ? :’(

  24. Maxi sagt:

    Ich muss das doch irgendwie hinkriegen…

  25. Maxi sagt:

    Hey, Ich bins wieder. Ich hab jetzt einfach nochmal alles von vorne gemacht und hab alles was als ich fertig war im Terminal-window stand als .rtf gespeichert und bei Rapidshare hochgelade. Guck dir die datei bitte mal an. Vielleicht findest du ja da ne Lösung für mein Problem…

    http://rapidshare.com/files/87002863/Terminal-Window_.rtf.html

    Danke!

  26. Maxi sagt:

    ich brauche dringend Hilfe!!!

  27. Maxi sagt:

    Gibt es keine Möglichkeit einen Ordner irgendwo in die XCode-Library hinzuzufügen, der dann den Build von ARM-Binäry erlaubt? Oder gibt es vielleicht ein Installationsprogramm für llvm???
    HELFT MIR!!!

    http://rapidshare.com/files/87002863/Terminal-Window_.rtf.html

  28. Maxi sagt:

    Oder kann man eine Datei erstellen oder downloaden die ich dann in dad Template packe und in Xcode anklicke um den code zu kompillieren????

  29. holeg sagt:

    Du bist schon ein ganzes Stück weiter.

    Wie es aussieht hast Du einen funktionierenden llvm. So wie ich das sehen konnte ging nur der Build vom llcm-gcc schief.

    Probier mal folgendes:

    cd ~/iphonedev/
    pushd llvm-svn
    export LLVMOBJDIR=`pwd`
    popd
    HEAVENLY=/usr/local/share/iphone-filesystem
    pushd iphone-dev
    rm -R build/llvm-gcc-4.0-iphone
    mkdir -p build/llvm-gcc-4.0-iphone
    pushd build/llvm-gcc-4.0-iphone
    ../../llvm-gcc-4.0-iphone/configure --enable-llvm=`llvm-config --obj-root` --enable-languages=c,c++,objc,obj-c++ --target=arm-apple-darwin --enable-sjlj-exceptions --with-heavenly=$HEAVENLY --with-as=/usr/local/bin/arm-apple-darwin-as --with-ld=/usr/local/bin/arm-apple-darwin-ld
    make LLVM_VERSION_INFO=2.0-svn-iphone-dev-0.3-svn
    sudo make install
    popd
    popd
    

    Wenn das ohne Fehlermeldungen (Warnings sind ok) durchläuft dann hast Du fast alles geschafft.

    Achtung bei Punkt 3.11

    Du musst da eine Datei erzeugen und diese Datei auf Deinem Schreibtisch speichern. Du hast den Inhalt der Datei als Befehl eingegeben, was nicht funktionieren kann ….

  30. Mit dem iPhone auf SQLite Datenbanken zugreifen » Beitrag » iPhone-dev.de sagt:

    […] und wartungsfreundlicher, daher ist diese Methode zu bevorzugen. In dieser Anleitung wird das hier beschriebene SDK benutzt, die Code-Beispiele funktionieren allerdings auch mit der herkömmlichen Makefile Methode […]

  31. Maxi sagt:

    Schön wärs wenns funktioniert hätte:
    Last login: Mon Jan 28 14:10:31 on ttys000
    maxi-kraigs-macbook:~ maxikraig$ cd ~/iphonedev/
    maxi-kraigs-macbook:iphonedev maxikraig$ pushd llvm-svn
    ~/iphonedev/llvm-svn ~/iphonedev
    maxi-kraigs-macbook:llvm-svn maxikraig$ export LLVMOBJDIR=`pwd`
    maxi-kraigs-macbook:llvm-svn maxikraig$ popd
    ~/iphonedev
    maxi-kraigs-macbook:iphonedev maxikraig$ HEAVENLY=/usr/local/share/iphone-filesystem
    maxi-kraigs-macbook:iphonedev maxikraig$ pushd iphone-dev
    -bash: pushd: iphone-dev: No such file or directory
    maxi-kraigs-macbook:iphonedev maxikraig$ rm -R build/llvm-gcc-4.0-iphone
    maxi-kraigs-macbook:iphonedev maxikraig$ mkdir -p build/llvm-gcc-4.0-iphone
    maxi-kraigs-macbook:iphonedev maxikraig$ pushd build/llvm-gcc-4.0-iphone
    ~/iphonedev/build/llvm-gcc-4.0-iphone ~/iphonedev
    maxi-kraigs-macbook:llvm-gcc-4.0-iphone maxikraig$ ../../llvm-gcc-4.0-iphone/configure –enable-llvm=`llvm-config –obj-root` –enable-languages=c,c++,objc,obj-c++ –target=arm-apple-darwin –enable-sjlj-exceptions –with-heavenly=$HEAVENLY –with-as=/usr/local/bin/arm-apple-darwin-as –with-ld=/usr/local/bin/arm-apple-darwin-ld
    -bash: ../../llvm-gcc-4.0-iphone/configure: No such file or directory
    maxi-kraigs-macbook:llvm-gcc-4.0-iphone maxikraig$ make LLVM_VERSION_INFO=2.0-svn-iphone-dev-0.3-svn
    make: *** No targets specified and no makefile found. Stop.
    maxi-kraigs-macbook:llvm-gcc-4.0-iphone maxikraig$ sudo make install
    make: *** No rule to make target `install’. Stop.
    maxi-kraigs-macbook:llvm-gcc-4.0-iphone maxikraig$ popd
    ~/iphonedev
    maxi-kraigs-macbook:iphonedev maxikraig$ popd
    -bash: popd: directory stack empty
    maxi-kraigs-macbook:iphonedev maxikraig$

  32. Maxi sagt:

    Gibt es vielleicht noch einen ähnlichen code? Konntest du noch ein “INDIZ” aus meinem TERMINAL-WINDOW schließen???

  33. holeg sagt:

    Also folgendes gilt: Wenn irgendwas mit Fehler beendet wird, wie zB: -bash: pushd: iphone-dev: No such file or directory Dann brauchst Du nicht weiterzumachen, sondern logisch überlegen warum der Fehler auftritt. In dem Fall gibt es anscheinend kein “iphone-dev” Verzeichnis in deinem Arbeitsordner (~/iphonedev).. Dann must du, bevor Du die Befehle ausführst noch mal das iphone-dev respository auschecken. Also nach den cd ~/iphonedev/ folgenden Befehl ausführen:

    svn checkout http://iphone-dev.googlecode.com/svn/trunk/ iphone-dev
    

    und dann weiter wie in meinem letzten Kommentar beschrieben.

    Der Toolchain Build wird Dir nur gelingen wenn Du auch mitdenkst!

  34. Sigar sagt:

    Hallo
    ein sehr gutes Tutorial. Hab fast alles nachvollziehen können.
    Nur leider bekomme ich die odcctools aus Schritt 3.4 nicht installiert:
    bei make erhalte ich:

    ../../../odcctools/include/libkern/machine/OSByteOrder.h:45: error: redefinition of ‘_OSSwapInt16’
    /usr/include/libkern/i386/_OSByteOrder.h:49: error: previous definition of ‘_OSSwapInt16’ was here
    ../../../odcctools/include/libkern/machine/OSByteOrder.h:54: error: redefinition of ‘_OSSwapInt32’
    /usr/include/libkern/i386/_OSByteOrder.h:58: error: previous definition of ‘_OSSwapInt32’ was here
    ../../../odcctools/include/libkern/machine/OSByteOrder.h:63: error: redefinition of ‘_OSSwapInt64’
    /usr/include/libkern/i386/_OSByteOrder.h:69: error: previous definition of ‘_OSSwapInt64’ was here
    make[1]: *** [execute.o] Error 1
    make: *** [libstuff] Error 2

    Damit funktioniert natürlich auch Schritt 3.10 nicht. (ich nehme an, dass der die odcctools braucht.)
    Dort verstehe ich auch nicht die angezeigten Werte von HEAVENLY bzw. LLVMOBJDIR im Vergleich zu dem was nach Anleitung dort eingetragen werden soll.

    Kann mir jemand mit den occdtools helfen?!

    Schönen Gruss
    Sigar

  35. holeg sagt:

    Ich kann mich erinnern das selbe Problem mit den occdtools gehabt zu haben. Hast Du die neusten developer Tools installiert? Mit den original Developer Tools von der Leopard DVD geht es nämlich nicht. Folgender Thread könnte Dir vielleicht auch weiterhelfen: http://code.google.com/p/iphone-dev/issues/detail?id=31

  36. holeg sagt:

    Dort verstehe ich auch nicht die angezeigten Werte von HEAVENLY bzw. LLVMOBJDIR im Vergleich zu dem was nach Anleitung dort eingetragen werden soll.

    In HEAVENLY muss der Pfad zum iPhone Dateisystem stehen, also “usr/local/share/iphone-filesystem” und in LLVMOBJDIR sollte der Pfad zum llvm-svn Ordner stehen. Wenn man den Befehl LLVMOBJDIR=`pwd` unter 3.1 ausführt, dann befindet man sich im llvm-svn Order. das `pwd` (print working directory) bewirkt dann dass der Pfad des aktuellen Ordners (llvm-svn) in die Variable LLVMOBJDIR geschrieben wird.

  37. Sigar sagt:

    Wow, das ging ja schnell. Ich bin begeistert.

    Also ich hatte mir vorher die XCode 3.0 geholt und installiert. Das sollten dann auch die neuesten Dev Tools sein.

    Hab mich dann auch mal durch den Threat, den Du angegeben hast durchgehangelt. Es scheint an den folgenden Einstellungen zu liegen:
    export CC=”gcc -isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4″
    export MACOSX_DEPLOYMENT_TARGET=”10.4″

    Damit komme ich im make-Prozess zwar weiter. Aber bekomme am Schluss immer noch:
    ld: symbol(s) not found
    collect2: ld returned 1 exit status
    make[1]: *** [checksyms] Error 1
    make: *** [install] Error 1

    Und eigentlich habe ich Leopard 10.5 laufen. Aber mit oben statt 10.4 10.5 gehts auch noch nicht.

  38. holeg sagt:

    Das mit dem 10.4 ist ok. Das bedeutet nur dass der Build Dateien aus dem 10.4 SDK benötigt, welches bei den Developer Tools dabei ist. Hast Du einen PPC oder Intel Mac?

  39. Sigar sagt:

    Also, hab die occdtools installieren können.
    Musste 10.4u mit 10.5 ersetzen.
    Das gleiche hab ich natürlich auch bei Schritt 3.10 gemacht.
    Aber dort bekomme ich jetzt beim make:

    checking for gcc -isysroot -mmacosx-version-min=10.5 option to accept ANSI C… none needed
    checking how to run the C preprocessor… /lib/cpp
    configure: error: C preprocessor “/lib/cpp” fails sanity check
    See `config.log’ for more details.
    make: *** [configure-fixincludes] Error 1

    Also muss irgendwo noch was beim llvm-gcc angepasst werden? Oder geht der mit 10.5 nicht?

  40. Sigar sagt:

    Ist ein Intel-Mac (iMac)

  41. holeg sagt:

    hmm habe auch einen Intel Mac mit 10.5.1 und bei mir hat es so wie in der Anleitung beschrieben funktioniert (mit 10.4u). Hast Du Dir das config.log mal angeschaut? Wenn man “fails sanity check” googelt, dann bekommt man den Hinweis dass der richtige gcc nicht gefunden wird. Wichtig hier ist auch dass die LLVMOBJDIR Variable gesetzt ist und auf dein llvm-svn Ordner zeigt. Ich habe in der Anleitung geschrieben dass man die Variable mit LLVMOBJDIR=~/iphonedev/llvm-svn setzen kann. Versuch hier mal anstelle ~/iphonedev den kompletten Pfad anzugenen:
    LLVMOBJDIR=/Users/YourUserName/iphonedev/llvm-svn

  42. Sigar sagt:

    Yeah. Geschafft.

    Dankke für die Hilfe.
    Hab nochmal von vorne begonnen und bei Schritt 3.10 vor dem configure von occdtools folgende Variable gesetzt:
    export INCPRIVEXT=”-isysroot /Developer/SDKs/MacOSX10.4u.sdk”

    Ansonsten lief alles nach Anleitung.

  43. holeg sagt:

    Herzlichen Glückwunsch :-)

    Werde das mit der INCPRIVEXT Variablen gleich der Anleitung hinzufügen. Bevor ich die Anleitung geschrieben habe, habe ich viel rumexperimentiert. Vielleicht hatte ich die Variable schon gesetzt …

    Danke für die Info :-)

  44. nobreak sagt:

    Hi, habe mich auch durch den Tutorial gewühlt gehabt - und läuft nun auch schon ein paar Tage bestens. Vielen Dank auch von mir. Ich habe jetzt trotzdem nochmal eine Frage. Und zwar, möchte ich nun mal etwas mehr als ein Hello World oder ähnliches programmieren und wollte mich mal gleich auf MailAccount.h stürzen. Beim Compelieren jedoch meckert er, das die NSObject.h nicht gefunden werden kann. Laut 1.1.2 Docu soll diese ja dann sicherlich bei verwendung deines SDK Tutorials ~/iphone-dev/include/CoreFoundation mit drin liegen - leider ist das bei mir aber nicht der Fall. Auzufinden wäre da die NSObject.h nur im MACOS SDK. Wo liegt bei Dir die NSObject.h, oder muss ich irgendwie das MACOS SDK ins xCode Project includen ?

  45. holeg sagt:

    NSObject.h liegt bei mir in /usr/local/arm-apple-darwin/include/Foundation Das installHeaders Script kopiert die Foundation Headers vom normalen Mac SDK in das /usr/local/arm-apple-darwin/include Verzeichnis.

    Ich denke Dein Problem liegt wo anders. Hast Du das Message Framework im Makefile eingebunden? Im Makefile solltest Du bei LDFLAGS noch zusätzlich folgendes hinzufügen:

    -framework Message
  46. Maxi sagt:

    Hey, ich bins mal wieder! Folgendes: Bei mir kommt, wenn es Probleme gibt, entweder
    -”No Rule to make target ‘…’. Stop. ” - Diese Meldung verstehe ich nicht, d.h: Ich kann sie übersetzen:-D…Aber ich weiß nicht woran es liegt.

    oder

    -er meldet dass er keine Makefile findet. Woran kann es denn liegen, dass er die Makefile nicht findet???

  47. holeg sagt:

    Die Makefiles werden normalerweise vom configure Script erzeugt. Schlägt ein configure fehl, dann gibt es auch kein Makefile.

    Wenn “No rule to make target” kommt, bedeutet dies, dass der compiler irgendwas nicht findet. Wahrscheinlich etwas, was durch einen Fehler von einem vorherigen Schritt nicht erstellt wurde.

    Nähere Infos über das GNU Build System findest Du hier: http://de.wikipedia.org/wiki/GNU_Build_System

  48. nobreak sagt:

    Hi, ich nochmal - ja das mit dem Message Framwork hat ich schon gemacht. Habe nun das Problem gefunden aber noch keine Lösung parat. Und zwar schlägt bei der Ausführung von dem install-header.sh script bei vielen Dateien ein “PERMISSION DENIED” auf :

    Folgendes macht ja das script:
    /usr/bin/install -c -m 644 /Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObject.h /usr/local/arm-apple-darwin/include/Foundation/NSObject.h

    es kommt aber ein :
    install: /usr/local/arm-apple-darwin/include/Foundation/NSObject.h: Permission denied

    dieses sieht der user normalerweise nicht bei der Ausführung des scripts

    Also entweder stell ich mich zu blöd an, aber ich bekomme auch ein manuelles Kopieren nicht hin (Permission denied) und ein chmod auf auf den betreffenden Verzeichnis klappt auch nicht. Any Idea?

  49. holeg sagt:

    Also ein Kopieren als root oder mit sudo sollte eigentlich immer funktionieren:

    sudo chmod 755 /usr/local/arm-apple-darwin/include/
    sudo mkdir /usr/local/arm-apple-darwin/include/Foundation
    sudo cp /Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObject.h /usr/local/arm-apple-darwin/include/Foundation/NSObject.h
    
  50. Maxi sagt:

    Das heißt: wenn ich wissen will wieso ein configure fehlschlägt gebe ich einfach zB: diesen Code ein./configure –enable-optimized
    Und überprüfe was er so zwischendurch meldet.

  51. nobreak sagt:

    Ja super, danke - hab nun ein “sudo chmod 755 /usr/local/arm-apple-darwin” gemacht und danach nochmal das install-header.sh aufgerufen - jetzt wurden alle dateien kopiert. Mein Kollege hatte übriegens das gleiche Problem und ist ebenfalls nach deinem Tutorial gegangen - eventuell lohnt es sich da ja eine Änderunge vor zu nehmen - hab vielen Dank für dein Hilfe :-)

  52. nobreak sagt:

    Ich muss dich nun doch noch mal nerven, ich hoffe das ist kein Problem für dich.

    Es gibt einige Header files (z.B. Message/Account.h), die importieren andere header (z.B. NSObject.h) auf folgende Weise “#import “NSObject.h”. Beim Kompelieren werden diese nicht gefunden - würde ich statt dessen “#import “Foundation/NSObject.h” schreiben, findet er es. Im makefile ist dank des Templates ja “-framwork Foundation” schon drin. Kennst Du noch einen Weg, wie ich dem Projekt einen weitern Include-Pfad mitteilen kann - ich möchte einfach nicht alle SDK-Files ändern müssen-
    oder mach ich einfach irgend einen Fehler ?

  53. holeg sagt:

    @nobreak: Gute Frage. In Sachen Makefile bin ich auch nicht gerade ein Profi. Aber als Workarround kannst Du auch das header File NSObject.h in dein Projektverzeichnis kopieren. Sollte dann kompilieren. Habe ich schon bei diversen Open Source iPhone Programmen gesehen dass andere das auch so machen.

    @maxi: Das –enable-optimized ist eine von vielen Optionen die man bei configure angeben kann. Mit ./configure –help bekommst Du alle möglichen Optionen angeboten.

    @all: Ein kleiner Tipp: Erica Sadun hat eine Mailingliste für iPhone Developer eingerichtet. Ich habe mich dort eingetragen und finde es sehr interessant was dort so diskutiert wird. Da tummeln sich einige Profiis rum die einem gerne helfen :-) Ihr könnt Euch hier anmelden: http://box94.bluehost.com/mailman/listinfo/iphonesdk_ericasadun.com

  54. Maxi sagt:

    Hey, noch einmal ne kleine frage: Bei dem Projekt “winchain” (die iPhone-Toolchain für windows) muss man eine “prebuilttoolchain.RAR” Datei downloaden. Wenn man diese entpackt sieht man, dass sie eine ganze Menge Ordner beinhaltet die einem schon von der iPhone-Toolchain für Mac bekannt vorkommen. Sogar ein Ordner namens “Mac os x 10.4u.SDK” ist vorhanden. Vielleicht werden diese Ordner von winchain nur noch an den richtigen Platz gebracht.
    Kann man die Toolchain so oder ähnlich nicht auch für mac umsetzen???

  55. holeg sagt:

    Möglich wäre das schon. Wenn der Tag 60 Std hätte würde ich das vielleicht sogar angehen ;-)

    Ich habe allerdings gerade herausgefunden, dass es bereits Installer für die Mac Toolchain gibt: http://www.google.de/search?source=ig&hl=de&rlz=&q=iphone+toolchain+installer&btnG=Google-Suche&meta= Allerding gibt es auch hier Nachteile, wie zB veraltete Firmware bzw veraltete Toolchain. Da ich bereits eine funktionierende Toolchain auf meinem System installiert habe, werde ich diese Methoden mit Sicherheit nicht testen! Habe keine Lust mir mein System kaputt zu machen.

  56. LinMan sagt:

    Ich komme bei Punkt 3.4 nicht weiter (Intel mit Leopard 10.5.1).

    Nachdem die odcctools vom Link nicht mehr zum runterzuladen sind, hab ich sie von einer anderen Quelle geladen (erste bei Google).
    Wenn ich nun

    ../../build/odcctools/configure –target=arm-apple-darwin –disable-ld64

    aufrufe (wohlgemerkt mit “build”, sonst stimmt der Pfad nicht), dann bekomme ich die Meldung “configure: error: Unsupported target arm”.

    Was mache ich hier falsch? Übrigens es handelt bei der odcctools Version die ich heruntergeladen habe um die selbe Version (odcctools-20060413.tar.bz2).

  57. LinMan sagt:

    Irgendwie muss beim ersten Versuch, das iphone-dev Repository herunterzuladen die Verbindung abgerissen sein (odcctools fehlten). Nach weiteren Fehlern, war nun einen Neuinstallation der XCode Tools die Lösung.

    Super Anleitung!

  58. Michael sagt:

    Hallo Leute!

    Bei mir haut die SSH verbindung nicht richtig mit XCode hin!
    Wenn ich ein Projekt kompilieren will, bekomme ich nur Fehlermeldungen.
    Er schafft es nicht aus Xcode heraus ein SCP oder eine SSH verbindung aufzubauen.
    “Permission denied, pleas try again” heißt es nur, in den Build results.

    Ich muss doch auch im Makefile jedes Projekts die IP eintragen, oder?
    Was kann der Fehler sein?
    Die SSH verbindung außerhalb von Xcode funktioniert einandfrei…
    Bin um jeden Rat dankbar.
    mfg
    Michael

  59. Michael sagt:

    Hallo nochmal!

    Funktioniert diese Anleitung nur für das IPhone, oder für den IPod Touch auch?
    mfg,
    Michael

  60. holeg sagt:

    Sollte auch mit iPhone touch funktionieren! (Habs nicht getestet da ich keinen iPod Touch besitze)

    Funktioniert die SSH Verbindung ausserhalb auch ohne Password, dh. der host ist im authorized_keys eingetragen?

    Die IP muss nirgendwo eingetragen werden. Es muss nur einmal, wie in 4.4 beschrieben, die Umgebungsvariable IPHONE_IP gesetzt werden. Xcode setzt dann die IP automatisch ein. Natürlich kannst Du auch die IP jedes mal in das Makefile eintragen, sollte auch funktionieren.

  61. Michael sagt:

    Hallo!
    Die SSH Verbindung rennt außerhalb nur mit PW Eingabe!
    Aber zu Punkt 4.4 habe ich eine Frage:
    “Nun muss man den Property List Editor starten (liegt in /Developer/Applications/Utilities) und ein Child mit dem Namen “IPHONE_IP”, der Klasse “String” und als Value die IP seines iPhone eintragen. ”
    Ein Child machen? Wenn ich auf File/New gehe, dann sehe ich nur den Button “Root”. Mit welcher Dateiedung muss ich dann das IPHONE_IP speichern, von dem Property List Ed.? Ich habs mal als xml gespeichert und dann via “mv” in den besagten Pfad umgespeichtert –>
    “Das Ganze dann als ~/.MacOSX/environment.plist speichern und den Mac neu starten.”

    Aber nach dem Neustart funktioniert das nicht. Wenn ich kompilieren will in Xcode, dann steht da folgendes:
    “The authenticity of host ‘ (::1)’ can’t be established.
    RSA key fingerprint is xxxx.
    Are you sure you want to continue connecting (yes/no)?”

    Ich habe es mit der Zeit aufgegeben und dann händisch in die Makefiles die Ip eingetragen, aber da gehts auch nicht…

    BTW. weißt du wie man die Testprogramme wieder löschen kann vom IPod/ IPhone?

    mfg und Danke

  62. holeg sagt:

    Natürlich muss man im Property List Editor zuerst einen Root Knoten anlegen, dachte dass ist selbstverständlich … In diesem Root Knoten erstellst Du dann das Child. Du kannst es dann als
    environment.plist auf dem Desktop speichern und per mv in den unsichtbaren Ordner bewegen:

    mkdir ~/.MacOSX/environment.plist #Kann sein dass der Ordner schon existiert, dann einfach Fehlermeldung ignorieren
    mv ~/Desktop/environment.plist ~/.MacOSX/environment.plist
    

    Nach einem Neustart kannst Du mit folgendem Befehl testen ob es geklappt hat:

    echo $IPHONE_IP
    

    Als Ausgabe sollte die iPhone IP erscheinen.

    Es gibt auch noch andere Möglichkeiten unter OS X Umgebungsvariablen zu setzen. Hier einfach mal googeln. Oder Du trägst die IP fest in das Makefile vom Xcode Template ein. Dann brauchst Du die IP auch nicht bei jedem neuen Projekt eintragen.

    Wg der SSH Verbindung: Am besten Du löscht die authorized_keys Dateien im .ssh Ordner (auf dem Mac und auf dem iPhone) und führst Schritt 4.3 noch mal durch. Wenn das geklappt hat solltest Du Dich mit

    ssh root@IP_DES_IPHONES
    

    ohne Eingabe des Passwords anmelden können. Das Password wird nur beim ersten Verbindungsaufbau abgefragt, danach nie wieder! Hat bei mir zumindest so geklappt.

  63. holeg sagt:

    BTW. weißt du wie man die Testprogramme wieder löschen kann vom IPod/ IPhone?

    Einfach per ssh mit dem iPhone verbinden und dann den Programmordner (.app) des Programms löschen. Nehmen wir mal an Du wolltest Test.app löschen, dann geht das so:

    ssh root@IP_DES_IPHONES
    rm -R /Applications/Test.app
    
  64. Michael sagt:

    Hey!
    Dankeschön. Jetzt rennt’s endlich…:)
    MFG, Michael

  65. Florian sagt:

    Hat hier schon mal jemand die 1.1.2 Header installiert? Ich denke bei der oben beschriebenen Anleitung ist man mit den 1.1.1 Headern
    dabei. Ich habe die 1.1.2 Header installiert und bekomme Fehler beim compillieren:

    /usr/local/lib/gcc/arm-apple-darwin/4.0.1/../../../../arm-apple-darwin/include/Foundation/NSAffineTransform.h:9:29: error: NSCodingProtocol.h: No such file or directory

  66. The iPhone Developer’s Cookbook » Beitrag » iPhone-dev.de sagt:

    […] Zdziarskis Buch "iPhone Open Application Development", welches auf die inoffizielle "Open Toolchain" eingeht. Wann das Buch allerdings erscheinen wird ist noch unklar. In Ihrer Mailingliste wies […]

  67. Gerold Pummer sagt:

    Danke für diese ausgezeichnete Schritt für Schritt Anleitung! Die hat sicher viel Zeit und Mühe gekostet. Danke!!

    Habe hier ein spezielles Problem, bei dem ich nicht mehr weiterkomme. Und zwar kann ich die Toolchain - wie es scheint - fehlerfrei erstellen und damit Dein HelloWorld Sample ohne Fehler übersetzen. Wenn ich dann dieses helloworld über das Springboard öffne, wird die Statuszeile (Batterie, Uhrzeit, …) dargestellt und darunter ist alles schwarz. Nach ca. 15s wird die Applikation - vom iPhone? - beendet.

    Die Toolchain habe ich in der Zwischenzeit zwei mal unter 10.5.2 auf einem G4 iBook erzeugt. Xcode 3.0 habe ich mir für den zweiten Versuch extra nochmal von Apple geladen. Beim Erstellen der Toolchain gibt es keine Fehler, die den make abbrechen bzw. die es mir nicht erlauben den nächsten Schritt der Anleitung ohne Fehler ausführen zu können.

    Das 16GB iPhone läuft unter 1.1.4.

    Gibt es spezielle Aktionen, die man beim Erstellen der Toolchain berücksichtigen muss, wenn man dies am PPC macht? Oder jage ich der falschen Ursache nach und das Problem ist in der Helloworld.app zu finden?

    Wäre für jeden Tipp dankbar!

  68. Gerold Pummer sagt:

    Dir Ursache für das “Nichtstarten” der Applikation war nicht die fehlerhafte ToolChain, sondern das fehlende Execution-Bit der Applikation. Bei mir hat /Applications/HelloWorld.app/HelloWorld kein “x” Bit. Warum auch immer.

    Also habe ich mittels “ssh root@IPHONE_IP” und einem “chmod 755 /Applications/HelloWorld.app/HelloWorld” dieses Bit gesetzt und schon gehts.

    Danke noch mal fürs Tutorial!

  69. Internet tip & tricks world » Blog Archive » iPhone-Dev: CoCoa.h not found sagt:
  70. ludowique sagt:

    moinmoin,
    ich find die Anleitung so gut, dass ich sie erst mal verlinkt hab:
    http://blog.ludwigschuster.de/2008/08/iphone-dev

    Aber des weiteren hab ich die Frage, ob das auch mit der FW2.0 oder gar 2.0.1 klappt. Ich hab es ausprobiert, und bin bei dem erzeugten image hängen geblieben - welches keinen mountbaren Inhalt hat.

    Das heißt dann wohl das das entschlüsseln ohne erfolg ist - Fehlermeldungen gab es jedoch nicht.

    Danke schon mal
    und allet jute

  71. Alex sagt:

    Klasse Tutorial! Vielen Dank dafür! Gebt Ihr auch Kurse?

  72. iPhone App programmieren f sagt:

    […]

Dein Kommentar