Crosscompiling

Dieses Thema im Forum "Mac OS X Entwickler, Programmierer" wurde erstellt von benutzername, 05.11.2003.

  1. benutzername

    benutzername Thread Starter MacUser Mitglied

    Beiträge:
    19
    Zustimmungen:
    0
    MacUser seit:
    03.05.2003
    Ich versuche gerade verzweifelt ein linuxprogramm zu compilieren.

    Jetzt ist meine Frage:
    Wie kann ich auf einer Interkiste ein Programm für OSX complieren.
    (Gehen tut es; Nur wie?)

    Hat da jemand Erfahrung??
     
  2. /etc

    /etc MacUser Mitglied

    Beiträge:
    137
    Zustimmungen:
    0
    MacUser seit:
    21.08.2003
    Was verstehst Du unter "Interkiste"?
    Also auf einem PC kannst Du kein Programm für OSX kompilieren, was aber geht ist den Quellcode so zu modifizieren (mit #ifdefs), daß alles was eventuell unter OSX geändert werden mußte automatisch abläuft!
    Davon sind eventuell einige Libs betroffen! Grundsätzlich läuft aber jedes Programm ohne GUI ohne größere Hürden sowohl auf dem PC als auch auf dem Mac....
     
  3. benutzername

    benutzername Thread Starter MacUser Mitglied

    Beiträge:
    19
    Zustimmungen:
    0
    MacUser seit:
    03.05.2003
    oops.
    Meinte natürlich Intelkiste.

    Ich will z.b. eine mysql compilieren.
    make bricht ab weil osx bzw freebsd kein pool.h hat.

    In ein paar Diskusionlisten finde ich immer Ansätze aber
    keine gute Doku. Gehen tut das das ich auf einer Intelkiste
    programme für osx compiliere.
     
  4. /etc

    /etc MacUser Mitglied

    Beiträge:
    137
    Zustimmungen:
    0
    MacUser seit:
    21.08.2003
    also hier kannst Du die Dateien für OSX ziehen, ich weiß jetzt nicht genau, was Du da kompilieren möchtest, aber hiermit gehts bestimmt:

    http://www.mysql.com/downloads/mysql-4.0.html

    Vielleicht hast Du einfach ne Version für ein anderes OS! Du brauchst natürlich die Quellen für OSX
     
  5. Descartes

    Descartes unregistriert

    Beiträge:
    189
    Zustimmungen:
    0
    MacUser seit:
    14.12.2002
    Damit das mit dem Crosscompilieren klappt musst du natürlich als erstes mal auf deiner Intel Kiste den GCC als Cross-Compiler installieren.

    Bei manchen Linux Distributionen ist ein passender GCC Compiler optional installierbar. Ansonsten ist Handarbeit angesagt und du darfst gleich mal in die Tiefen des Crosscompiler-Bau absteigen. In diesem Fall benötigst du den Quellcode des GCC Compiler inklusive aller davon benötigten Bibliotheken (z.B. glibc) und Tools (z.b. Bison, make, as, ld, ...). Als nächstes kompilierst du mit deinem nativen Intel GCC Compiler dann Schritt für Schritt die ganzen Bibliotheken, Tools und letztendlich den Crosscompiler GCC.

    Wie auch immer du vorgehst:
    Sollte bis hierhin alles geklappt haben, hast du nun *zwei* GCC Compiler auf deinem Intel System. Zum einen den GCC mit dem du Intel Binaries erstellen kannst und zum anderen deinen Crosscompiler.

    Du kannst dir dann deinen Quellcode (z.B. MySQL) herunterladen und ganz normal mit: "./configure" und "make" kompilieren. Allerdings musst du "./configure" entsprechend konfigurieren damit auch wirklich der Crosscompiler verwendet wird.

    Ein prominentes Beispiel für Crosscompilierung ist der VideoLAN Client (VLC) von http://www.videolan.org/ bei dem Linux die primäre Entwicklungsplattform ist und die Windows Binaries auf eben diesem Linux System crosscompiliert werden.
     
  6. benutzername

    benutzername Thread Starter MacUser Mitglied

    Beiträge:
    19
    Zustimmungen:
    0
    MacUser seit:
    03.05.2003
    Vielen Dank!!!

    Ich habe einen kleinen Artikel im Linuxmagazin 2000 gefunden.
    Leider finde ich im Internet keine gute Doku wie man den gcc einrichtet.
    In dem Artikel stand ungefähr drin das man die binutils anpasst und
    damit dann compiliert.
    Nun die mysql war nur ein Beispiel.
    Generell gibt es für linux gute programme die unter osx nicht laufen bzw.
    bei denen man Handstände machen muß um sie zu compilieren.
    Da hilft auch kein fink.
     
  7. Descartes

    Descartes unregistriert

    Beiträge:
    189
    Zustimmungen:
    0
    MacUser seit:
    14.12.2002
     
    Ich hatte auf der Arbeit mich mal an einem Crosscompiler (Solaris/SPARC sollte Windows Kommandozeilenprogramme kompilieren) versucht -- habs dann aber wieder sein lassen weil es dann doch zu viel Mühe gemacht hat.

     
    Programme die sich unter MacOSX auch nicht mit installierten Developer Tools fehlerfrei kompilieren lassen wirst du auch nicht oder nur schwer durch Crosscompilierung zur Mitarbeit bewegen können. Du bekommst beim Crosscompilieren vielleicht keine Fehlermeldungen -- wohl aber dann zur Laufzeit. In dem Fall gewinnst du also nix.

    Crosscompilierung macht dann Sinn, wenn du auf dem Zielsystem keinen Compiler zur Verfügung hast (Beispiel: Embedded Linux Geräte wie z.B. PDAs, Handhelds, etc.). Aber unter MacOSX steht dir mit den Developer Tools ja eine komplette Entwicklungsumgebung inklusive GNU Compiler zur Verfügung.

    Du kannst also jeden Quellcode dir direkt von z.b. ftp.gnu.org herunterladen und versuchen durchzukompilieren. Sollten beim Kompilieren Fehler auftreten wirst du nicht umhin kommen, diese zu beheben. Abschliessend kannst du dann mit dem Befehl "diff" deine Änderungen gegenüber dem originären Quellcode dokumentieren und den Fink Entwicklern zukommen lassen damit dieses Softwarepaket vielleicht zukünftig ebenfalls über Fink zum Download bereit steht.
     
  8. benutzername

    benutzername Thread Starter MacUser Mitglied

    Beiträge:
    19
    Zustimmungen:
    0
    MacUser seit:
    03.05.2003
    ok.

    Vielen Dank für die interessante Antwort!
     

Diese Seite empfehlen