15
Sept
09

SDL kompilieren (Mac OS X)

SDL and Snow Leopard

SDL aus den Quellen kompilieren ist nicht sehr schwierig und kann unter anderem von Vorteil sein. So kann man sdl-config benutzen und braucht auch nicht mehr die Objective-C-Datei mitzukompilieren.

Die Quellen bekommt man von der SDL-Website und kompiliert sie klassisch („unix-style“) mit den drei Befehlen „./configure“, „make“ und „sudo make install“. Es scheint allerdings bei der aktuellen SDL-Version ein Problem mit Snow Leopard (10.6) zu geben. Laut einem Kommentar auf der SDL-Mailingliste lässt sich dies aber umgehen, indem man mit gcc 4.0 kompiliert, das 10.5 SDK verwendet und i386 als Architektur erzwingt. Da ich noch nicht auf Snow Leopard umgestiegen in, konnte ich es allerdings nicht selbst ausprobieren.

$ mkdir temp
$ cd temp
$ curl -C - -O 'http://www.libsdl.org/release/SDL-1.2.13.tar.gz'
$ tar xzvf SDL-1.2.13.tar.gz
$ cd SDL-1.2.13
$ env CC='/usr/bin/gcc-4.0' CFLAGS='-isysroot /Developer/SDKs/MacOSX10.5.sdk -arch i386' LDFLAGS='-arch i386' ./configure --without-x
$ make
$ sudo make install
$ cd ..

Eine Anwendung kann danach auf dem Terminal so kompiliert werden:

$ g++ -o main main.cpp `sdl-config --cflags --libs`

Die SDL-Erweiterungen kompiliert man auf die selbe Weise, allerdings benötigt man je nachdem noch weitere Bibliotheken. So wird SDL_image ohne JPG, PNG und TIFF Support die entsprechenden Formate nicht lesen können. Im Prinzip ist es immer das Selbe: tar.gz laden, entpacken, ./configure, make, make install. Möglicherweise muss man den ./configure Teil auch anpassen, wenn man dies auf Snow Leopard machen will. Nachfolgenden ist immer das einfache „./configure“ aufgelistet:

$ curl -C - -O 'http://www.ijg.org/files/jpegsrc.v7.tar.gz'
$ tar xzvf jpegsrc.v7.tar.gz
$ cd jpeg-7/
$ ./configure
$ make
$ sudo make install
$ cd ..
$ curl -C - -O 'ftp://ftp.simplesystems.org/pub/libpng/png/src/libpng-1.2.40.tar.gz'
$ tar xzvf libpng-1.2.40.tar.gz
$ cd libpng-1.2.40
$ ./configure
$ make
$ sudo make install
$ cd ..
$ curl -C - -O http://dl.maptools.org/dl/libtiff/tiff-3.8.2.tar.gz
$ tar xzvf tiff-3.8.2.tar.gz
$ cd tiff-3.8.2
$ ./configure
$ make
$ sudo make install
$ cd ..
$ curl -C - -O 'http://www.libsdl.org/projects/SDL_image/release/SDL_image-1.2.7.tar.gz'
$ tar xzvf SDL_image-1.2.7.tar.gz
$ cd SDL_image-1.2.7
$ ./configure
$ make
$ sudo make install
$ cd ..

Nun haben wir auch SDL_image installiert. Für SDL_ttf wird zusätzlich FreeType benötigt:

$ curl -C - -O 'http://mirrors.zerg.biz/nongnu/freetype/freetype-2.3.9.tar.gz'
$ tar xzvf freetype-2.3.9.tar.gz
$ cd freetype-2.3.9
$ ./configure
$ make
$ sudo make install
$ cd ..
$ curl -C - -O http://www.libsdl.org/projects/SDL_ttf/release/SDL_ttf-2.0.9.tar.gz
$ tar xzvf SDL_ttf-2.0.9.tar.gz
$ cd SDL_ttf-2.0.9

Nun SDL_mixer:

$ curl -C - -O 'http://www.libsdl.org/projects/SDL_mixer/release/SDL_mixer-1.2.8.tar.gz'
$ tar xzvf SDL_ttf-2.0.9
$ cd SDL_mixer-1.2.8
$ ./configure
$ make
$ make install
$ cd ..

Und zum Schluss noch SDL_net:

$ curl -C - -O 'http://www.libsdl.org/projects/SDL_net/release/SDL_net-1.2.7.tar.gz'
$ tar xzvf SDL_net-1.2.7.tar.gz
$ cd SDL_net-1.2.7
$ ./configure
$ make
$ sudo make install
$ cd ..

Beim Kompilieren kann man dann einfach gegen die Bibliotheken linken:

$ g++ -o main main.cpp `sdl-config --cflags --libs` -lSDL_image -lSDL_ttf -lSDL_mixer -lSDL_net
Werbung

7 Antworten to “SDL kompilieren (Mac OS X)”


  1. 1 scyle
    20. September 2009 um 15:56

    Wenn ich das Beispiel von https://gameloop.wordpress.com/2009/08/11/sdl-unter-mac-os-x/ versuche zu kompilieren kommt nun:
    ld: warning: in /usr/local/lib/libSDLmain.a, file is not of required architecture
    ld: warning: in /usr/local/lib/libSDL.dylib, file is not of required architecture
    Undefined symbols:
    „_main“, referenced from:
    start in crt1.10.6.o
    „_SDL_Init“, referenced from:
    _SDL_main in ccRSCvCv.o
    „_SDL_Quit“, referenced from:
    _SDL_main in ccRSCvCv.o
    ld: symbol(s) not found
    collect2: ld returned 1 exit status

    Was könnte ich da vielleicht falsch gemacht haben?

  2. 3 scyle
    20. September 2009 um 21:38

    Ich habe das mit dem Befehl von oben kompiliert:
    g++ -o main main.cpp `sdl-config –cflags –libs`

    • 4 André
      20. September 2009 um 21:44

      Ich befürchte das Problem ist doch etwas unangehmer… Du könntest noch probieren „-arch i386“ anzuhängen, aber vermutlich wird dir das nicht weiterhelfen.

      g++ -o main main.cpp `sdl-config –cflags –libs -arch i386

      Es könnte noch etwas dauern, bis ich auch auf Snow Leopard umgestiegen bin.

  3. 5 scyle
    20. September 2009 um 22:10

    Die beiden warnings:
    ld: warning: in /usr/local/lib/libSDLmain.a, file is not of required architecture
    ld: warning: in /usr/local/lib/libSDL.dylib, file is not of required architecture
    sind zwar verschwunden, aber die anderen Fehler sind leider geblieben.

    Ich werde deinen Blog weiterverfolgen und hoffe, dass wenn du mal Snow Leopard hast, eine Lösung finden wirst 🙂

    Gruß scyle

  4. 8. August 2010 um 01:23

    Hey TomcatMurr!

    Vielleicht kannst du mir ja weiterhelfen.

    Ich bin zu Snow Leopard umgestiegen. Habe SDL mit Macports ohne Probleme installiert. Ich kann auch deine Beispiele in der Kommandozeile problemlos ausführen. Nur schaffe ich es nicht, das in Eclipse anständig zum laufen zu bringen. Da benötige ich immer noch den Ort der SDLMail.m Datei. Sonst kompiliert es nicht richtig. Es gibt den gleichen Fehler wie bei scyle.

    Mein Problem ist aber eigentlich folgendes: Ich habe mir mit Macports SDL_gfx installiert und brauche davon die SDL_gfxPrimitives.h, welche in /opt/local/inlucde/SDL abgelegt wurde.

    Wenn ich den Aufenthaltsort dieser Datei in Eclipse bei GCC C++ Compilter -> Includes eintrage, passiert nichts. Ich kann die Datei immer noch nicht mit #include nicht einfügen und beim kompilieren gibt es logischerweise Fehler.

    Eine Idee warum SDL_gfx nicht gescheit installiert wurde?

    Danke und Grüße

    • 9. August 2010 um 22:49

      Hallo nochmal!

      Nur für den Fall, dass es jemand liest und es beantworten will -> habe das Problem gelöst.

      Bei Eclipse muss man die Einstellungen für GCC C++ Compiler und den Linker jeweils für „Debug“ oder „Release“ oder beides einstellen. Das hatte ich nicht bedacht! Ich hatte alles für Release eingestellt, aber im Debug Modus kompiliert. Klar, dass es so nicht funktionieren würde 🙂

      Grüße


Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s


September 2009
M D M D F S S
 123456
78910111213
14151617181920
21222324252627
282930  

%d Bloggern gefällt das: