Warsztat.GDCompo!ProjektyMediaArtykułyQ&AForumOferty pracyPobieranie

Opisz napotkaną sytuację, a redakcja niezwłocznie znajdzie rozwiązanie!

wyślij anuluj

Przenośny SDL

Tekst został importowany z Warsztatowych artykułów. Jego oryginalnym autorem jest jj. Jeżeli został importowany poprawnie, usuń ten szablon!

Dla jasności dodam, że kompilacja będzie się odbywać pod Linux'em. Można w podobny sposób skorzystać pod Windows'ami z cygwin'a do kompilacji projektów korzystających z SDLa, ale ja głównie zajmem się opisem konfiguracji dla Linux'a.

Instalacja cross-tools

Pierwszą rzeczą jaką potrzebujemy to cross-tools. Narzędzia te umożliwią nam kompilację do Windows'owych exe'ków pod Linux'em. Do zainstalowania pakietu potrzebny jest skrypt build-cross.sh, który możemy znaleźć pod adresem:

http://www.libsdl.org/extras/win32/cross/build-cross.sh

Pobrany plik umieszczamy w tymczasowym katalogu (np. /root/tmp/cross/). Ustawiamy atrybut możliwości uruchomienia dla tego skryptu (chmod a+x build-cross.sh). Następnie edytujemy go, ponieważ trzeba wprowadzić do niego kilka poprawek. Otwieramy w przeglądarce adres URL zwarty w zmiennej MINGW_URL (26 wiersz w skrypcie). Zapewne będzie to adres: [url]http://heanet.dl.sourceforge.net/sourceforge/mingw[/url] Następnie ustawiamy najnowsze możliwe pakiety (znajdujące się pod podanym adresem) dla zmiennych: GCC_VERSION, BINUTILS i W32API. Dla mojego skryptu wyżej wymienione zmienne mają wartości:

GCC_VERSION=3.4.2-20040916-1
BINUTILS=binutils-2.15.94-20050118-1
W32API=w32api-3.2

Teraz możemy uruchomić skrypt ./build-cross.sh i wyjść z psem na spacer ponieważ proces instalacji będzie trwać około 30 minut (może trwać dłużej przy wolnym łączu ponieważ z internetu zostanie pobrane ok. 35 MB potrzebnych do instalacji).

Kiedy szczęśliwie zakończyliśmy instalację cross-tools pozostało nam jeszcze ściągnąć dwa skrypty:

http://www.libsdl.org/extras/win32/cross/cross-configure.sh
http://www.libsdl.org/extras/win32/cross/cross-make.sh

Nadajmy im atrybuty umożliwiające uruchomienie (chmod a+x cross*). Następnie należy skopiować je do /usr/bin (cp cross* /usr/bin/) lub dodać linki symboliczne:

cd /usr/bin/
ln -s /root/tmp/cross/cross-configure.sh
ln -s /root/tmp/cross/cross-make.sh

Teraz do kompilacji programów dla Windows'a będziemy używać komend cross-configure.sh zamiast ./configure i cross-make.sh zamiast make.

Instalacja SDLa

Ze strony http://www.libsdl.org/download-1.2.php pobieramy najnowsze źródło (obecnie to: SDL-1.2.8.tar.gz). Rozpakowujemy je do dwóch katalogów np. /root/tmp/SDL-1.2.8/ i /root/tmp/win-SDL-1.2.8/. Wchodzimy do katalogu SDL-1.2.8 i przeprowadzamy instalację dla Linux'a:

./configure
make
make install
Teraz przechodzimy do katalogu win-SDL-1.2.8, gdzie przeprowadzimy instalację SDLa potrzebną do kompilowania dla Windows'a:
cross-configure.sh
cross-make.sh
cross-make.sh install

W identyczny sposób instalujemy moduł SDL_image (ten i inne moduły można znaleźć pod adresem: http://www.libsdl.org/projects/).

Dla prawidłowego działania programu korzystającego z SDLa pod Windows'ami należy do katalogu w plikiem exe dograć plik SDL.dll (http://www.libsdl.org/release/SDL-1.2.8-win32.zip) a jeśli zamierzamy korzystać z biblioteki SDL_image należy również dograć wszystkie pliki dll z:

http://www.libsdl.org/projects/SDL_image/release/SDL_image-1.2.4-win32.zip

Tworzenie pliku Makefile i kompilacja

Zakładam że osoby czytające ten artykuł mają pojęcie o tym jak wygląda plik makefile. Tworzenie tego pliku pokaże na przykładzie bardzo prostego projektu. Załóżmy że projekt składa się z plików:[list][*]adds.cpp - plik zawierający funkcje wykorzystywane przez program[*]adds.h - plik nagłówkowy do pliku adds.cpp[*]first.cpp - główny plik programu.[/list]Pisanie makefile'a zaczniemy od zadeklarowania kilku zmiennych:

zmienne z nazwami plików wykonywalnych odpowiednio dla Windows'a i Linux'a:

BIN_WIN = first.exe
BIN_LINUX = first

zmienna z nazwą kompilatora

CC = g++

zmienna w listą plików:

OBJ = first.o adds.o

zmienna z nazwami bibliotek z których program będzie korzystać (dla przykładu to biblioteka SDL i SDL_image):

LIBS = -lSDL -lSDL_image

Reszta pliku makefile powinna wyglądać następująco:

linux: $(OBJ)
	$(CC) -o $(BIN_LINUX) $(OBJ) $(LIBS)

win:
	cross-make.sh cross_win
cross_win: $(OBJ)
	$(CC) -o $(BIN_WIN)  $(OBJ) -lmingw32 -lSDLmain $(LIBS) -mwindows

first.o: first.cpp
	$(CC) -o first.o -c first.cpp

adds.o: adds.cpp adds.h
	$(CC) -o adds.o -c adds.cpp

clear:
	rm *.o

all: linux clear win

Po utworzeniu pliku makefile w katalogu z projektem wystarczy napisać make linux by program został on skompilowany dla Linuxa i make win by stworzyć plik exe. Pamiętajmy o tym że przed użyciem make win (jeżeli użyliśmy wcześniej make linux i vice-versa) należy wywołać make clear. Wywołanie make all utworzy plik binarny dal Linux'a i exe dla Windows'a.

To już chyba wszystko co na chwilę obecną chciałem napisać ;-). Sam męczyłem się parę godzin z tą konfiguracją (ponieważ nie mogłem nigdzie znaleźć informacji na ten temat) dlatego więc postanowiłem napisać parę słów na ten temat.

Jeżeli masz problem lub chcesz żebym coś dodał do tego artykułu napisz do mnie [email protected].

PS. Zmieniony przeze mnie plik build-cross.sh: cross-tools.tar.gz Przykładowy projekt z makefile kompilującym dla Linux'a i Windows'a: first.tar.gz

PS 2. Mam nadzieję że zagorzali zwolennicy Linux'a skorzystają z tej możliwości, że ich projekty mogą być również uruchamiane pod Windows'ami i wypróbują cross-tools. ;-)

jj (jacek jerzy malinowski)

Tekst dodał:
Adam Sawicki
29.03.2006 20:30

Ostatnia edycja:
Adam Sawicki
29.03.2006 20:30

Kategorie:

Aby edytować tekst, musisz się zalogować.

# Edytuj Porównaj Czas Autor Rozmiar
#1 edytuj 29.03.2006 20:30 Adam Sawicki 6.97 KB
Zwykły
Do sprawdzenia
Do akceptacji
  • JasonVoorhees (@JasonVoorhees) 19 sierpnia 2008 01:51
    Widziałem, chyba gdzieś tu na warsztacie, łatwiejszą metodę :) Instalacja Dev C++ pod wine :]
  • Napisz komentarz:
    Aby dodać swój komentarz, musisz się zalogować.
Licencja Creative Commons

Warsztat używa plików cookies. | Copyright © 2006-2017 Warsztat · Kontakt · Regulamin i polityka prywatności
build #ff080b4740 (Tue Mar 25 11:39:28 CET 2014)