Crosscompiling

B

benutzername

Mitglied
Thread Starter
Dabei seit
03.05.2003
Beiträge
19
Reaktionspunkte
0
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??
 
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....
 
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.
 
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
 
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.
 
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.
 
Original geschrieben von benutzername
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.
 
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.

Original geschrieben von benutzername
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.
 
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.
 
ok.

Vielen Dank für die interessante Antwort!
 
Zurück
Oben Unten