1

Temat: gcc + sdl

Ze strony:

http://www.radix.net/~atari/mint/recent/

zamontowałem sobie gcc i sdl. Próbuję najprostszy przykład z tutoriala sdl:

#include<SDL.h>
#include<stdlib.h>
#undef main
int main()
{
 if(SDL_Init(SDL_INIT_VIDEO)<0) {
  printf("Nie mozna zainicjalizowac SDL");
 return 1;
 }
 atexit(SDL_Quit);
 return 0;
} 

i podczas kompilacji dostaję: fatal error SDL.h not found. W /usr/include/SDL oczywiście jest SDL.h, w c:\mint\mint.cnf dodałem ścieżkę do /usr/include/SDL i jak robię echo $PATH to pokazuje się ta ścieżka. Coś tu nie rozumiem, pomóżcie bo nie skompiluję najprostszego przykładu dla SDLa :)

Ostatnio edytowany przez jury (2010-11-01 19:39:40)

2

Odp: gcc + sdl

może po prostu dać

 #include <SDL/SDL.h> 

3

Odp: gcc + sdl

Tak, już na to trafiłem i poszło dalej, ale wielkie dzięki.
Teraz mam kolejne błędy, trylion undefined refrence to ..., .
Może jest w sieci jakiś tutorial jak postawić SDLa na MiNTie bo może coś naknociłem ? Nie mogę na nic trafić a chyba było by przydatne. No chyba że źle kompiluję:

gcc 1.c -o 1.prg -lSDL

Ostatnio edytowany przez jury (2010-11-01 20:49:45)

4

Odp: gcc + sdl

undefined.... to chyba z powodu nie dodania w opcjach projektu /parametrach/linkerze definicji co ma zlinkować,
ja dodaje zazwyczaj

-lmingw32
-mwindows
-lSDLmain
-lSDL
-lSDL_image
-lSDL_ttf

5

Odp: gcc + sdl

jury: jeżeli masz poprawnie zainstalowanego SDL'a to zamiast manualnie podawać dyrektywy dla prerocessora i linkera powinno się używać sdl-config --libs i sdl-config --cflags .

Więc kompilacja w Twoim przypadku powinna wyglądać następująco (jeżeli robisz to natywnie):

gcc l.c `sdl-config --cflags`-o l.prg `sdl-config --libs`   

lub

gcc `sdl-config --cflags` l.c -o l.prg `sdl-config --libs`   

Nie mam tego jak sprawdzić (chyba druga wersja będzie prawidłowa, nie pamiętam czy inkludy daje się przed plikiem źródłowym czy styknie po). Ogólnie powinieneś poczytać wiki SDL'a na ten temat. Pozatym oprócz SDLa trzeba linkować gemliba i ldg. Ale to załatwia sdl-config --libs. Jak będziesz miał błędy linkowania to sobie zainstaluj te biblioteki.

UWAGA: zwróć uwagę na apostrofy inaczej bash sypnie błędami i powie Ci f**k you.

Ostatnio edytowany przez saulot (2010-11-01 21:09:25)

=========================================
[www] https://nokturnal.pl
[ 16/32 bit Atari development wiki] https://bus-error.nokturnal.pl

6

Odp: gcc + sdl

Tak to tez probowalem ale krzyczal ze niewie co to  sdl-config --cflags i sdl-config --libs
No coz, chyba masz racje, musze troche wiecej poczytac wiki, a nie tak na hurra :)
A, czekaj, zakapowalem, bede instalowal w takim razie te biblioteki

Ostatnio edytowany przez jury (2010-11-01 21:16:58)

7

Odp: gcc + sdl

jury: to ściagnij sobie SDL'a i skompiluj ze źródeł. Robisz tylko najpierw

./autogen.sh

, potem

./configure --disable-threads --enable-static --disable-shared --disable-video-opengl
make && make install

Będziesz tylko potrzebował jakieś autotoolsy. m4(jak autogen zawiedzie), wersje deweloperskie gemliba, mintliba i ldg (tego na pewno nie będziesz miał, trzeba ściągnąć z sourceforge'a) itp... No i będziesz musiał jakoś z repozytorium mercuriala SDL'a ściągnąć, ale na atarce chyba klienta nie ma. Po instalacji sdl-config powien już być i wskazywać na odpowiednie ścieżki.

=========================================
[www] https://nokturnal.pl
[ 16/32 bit Atari development wiki] https://bus-error.nokturnal.pl

8

Odp: gcc + sdl

jury drugą opcją byłoby(jeżeli masz rzeczywiście tego SDL'a na dysku) dodanie ścieżek gdzie kompilator ma szukać inkludów SDLa i bibliotek.

spróbuj:

gcc -Iścieżka do inkludów 1.c -o 1.prg -lSDL -lgem -lldg -lm -Lścieżka do libów

Ostatnio edytowany przez saulot (2010-11-01 21:45:33)

=========================================
[www] https://nokturnal.pl
[ 16/32 bit Atari development wiki] https://bus-error.nokturnal.pl

9

Odp: gcc + sdl

to co przedostatnio napisales to jeszcze nie probowalem
ale to co ostatnio to juz tylko wypluwa 3 undefined reference ..., czyli juz lepiej :)
a sdl'a to raczej mam :)
poszedl bez problemow z rpm'a ze strony ktora sam jakies 4 miesiace temu linkowales ( Keith'a )
gcc zreszta tez

edit
OK sprobowalem skompilowac sdl'a samemu, pobralem zrodla ze strony Keith'a
autogen.sh prawie poszedl ale krzyknal ze mu potrzebny autoconf > 2.57 a ja mam wlasnie takowego.
na:

http://sparemint.org/sparemint/

jest wlasnie tylko 2.57, ale znalazlem 2.62 w netbsd dla atari,
alien nie chcial tknac .tgz wiec przerobilem go na rpm ( z sukcesem )
niestety podczas instalacji tego rpm'a krzyczy:
unpacking of archive failed on file /+build_info: cpio: open failed permission denied

czy to znaczy ze on chce stworzyc +build_info na / ? czy alien moze nie do konca dokonac prawidlowa konwersje ( jestem slaby jesli chodzi o te systemy, dopiero nabieram oglady :) )

Ostatnio edytowany przez jury (2010-11-02 00:00:34)

10

Odp: gcc + sdl

? ale netbsd to zupełnie inny system operacyjny, to nie ma szansy pójść!!! Przecież to binarki są na pewno inne, no chyba, że o czymś nie wiem (na razie wziąłem temat na logikę).  Pozatym tgz najlepiej rozpakowuje się

tar -xvjf nazwa_archiwum.tgz

Stąd możesz spróbować, ale te są ztarowane i potraktowane bzipem2:
http://gentoo.atariforge.org/files/sys-devel/
Wątpię czy to zadziała, możliwe, że autoconf sam ma jakieś zależności.. Najlepiej jakbyś ściągnął tą całą dystrybucję http://gentoo.atariforge.org/ i ją sobie zainstalował. Ale z tego co widzę to nie ma na razie do tego jakiejś instrukcji obsługi i informacji z czym się to je.. Ktoś to podobno instalował i nawet działało, ale gwarancji nie dam. Jedyny bonus jest taki, że to w miarę świeży soft, ale może wymagać nowszego kernela mintowego.. Ale w sumie to się nie znam. Zawsze możesz się dopytać na mintliście.

=========================================
[www] https://nokturnal.pl
[ 16/32 bit Atari development wiki] https://bus-error.nokturnal.pl

11

Odp: gcc + sdl

OK, pewnie masz rację, ale pisałem że te systemy dopiero poznaję. Na PC zainstalowałem sobie niedawno Ubuntu i jak ostatnio nie mogłem znaleźć czegoś  w .deb to poleciał .rpm z dystrybucji RedHat'owych przez aliena i bez żadnych problemów działa. No cóż chyba popłynąłem w temacie uznania możliwości aliena :D

Ostatnio edytowany przez jury (2010-11-02 07:15:29)

12

Odp: gcc + sdl

-mwindows -lmingw32 muahahaha

btw. skoro w przykladzie bylo #indclude <SDL.h> to nie trzeba bylo tego zmieniac na SDL/SDL.h, a wystarczylo podac gcc lokalizacje tych naglowkow (co robi wspomniany przez saulot sdl-config --cflags) poprzez parametr -I

u mnie sdl-config --cflags daje: -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT
u ciebie widze ze tez powinno wskazywac -I/usr/include/SDL (tj. w tym katalogu leza te naglowki, w rpm ze strony ktora podales)

The UNIX Guru`s view of Sex:
unzip; strip; touch; finger; mount; fsck; more; yes; umount; sleep

13

Odp: gcc + sdl

jellonek napisał/a:

-mwindows -lmingw32 muahahaha

No fakt, niedoczytałem, że nie chodzi o winde, my bad.

Odp: gcc + sdl

jury napisał/a:

i podczas kompilacji dostaję: fatal error SDL.h not found. W /usr/include/SDL oczywiście jest SDL.h, w c:\mint\mint.cnf dodałem ścieżkę do /usr/include/SDL i jak robię echo $PATH to pokazuje się ta ścieżka. Coś tu nie rozumiem, pomóżcie bo nie skompiluję najprostszego przykładu dla SDLa :)


A ja pamiętam, że Ty się miałeś zajmować aktualnie CZYMŚ INNYM. ;) :P

Trzy najpopularniejsze w Polsce platformy 8-bit: Piwo, Wino i Wódka.
http://ym-digital.i-demo.pl/ - http://yerzmyey.i-demo.pl - https://soundcloud.com/yerzmyey
ŻADEN DOBRY UCZYNEK NIE UJDZIE BEZ KARY.

15

Odp: gcc + sdl

jellonek napisał/a:

u mnie sdl-config --cflags daje: -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT
u ciebie widze ze tez powinno wskazywac -I/usr/include/SDL (tj. w tym katalogu leza te naglowki, w rpm ze strony ktora podales)

Tak, dokładnie też to miejsce wskazuje jak dam sdl-config --cflags, natomiast jak juz daje gcc 'sdl-config --cflags' to krzyczy że sdl-config --cflags: no such file or directory, wrrrr.

Ostatnio edytowany przez jury (2010-11-02 21:03:15)

16

Odp: gcc + sdl

jury napisał/a:
jellonek napisał/a:

u mnie sdl-config --cflags daje: -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT
u ciebie widze ze tez powinno wskazywac -I/usr/include/SDL (tj. w tym katalogu leza te naglowki, w rpm ze strony ktora podales)

Tak, dokładnie też to miejsce wskazuje jak dam sdl-config --cflags, natomiast jak juz daje gcc 'sdl-config --cflags' to krzyczy że sdl-config --cflags: no such file or directory, wrrrr.

hmm.. jak dla mnie tam nie powinno byc ' tylko ` (0x60 ASCII)
gcc `sdl-config --cflags`

Ostatnio edytowany przez bugz_ (2010-11-02 21:58:09)

17

Odp: gcc + sdl

jury: bo dajesz złe cudzysłowy i ci nie wstawia.

gcc .. `sdl-config --cflags`..

powinno zadziałać.

=========================================
[www] https://nokturnal.pl
[ 16/32 bit Atari development wiki] https://bus-error.nokturnal.pl

18

Odp: gcc + sdl

bo dales "nie w ta strone"
aby ominac tego typu roznice, tj. ` od ' - polecam uzywac konstrukcji $(sdl-config --cflags) ;)
albo po prostu przepisz wynik polecenia, tj. gcc -I/usr/include/SDL -D... file.c

saulot - ucz dobrych zwyczajow, a ` do nich nie nalezy ;)

Ostatnio edytowany przez jellonek (2010-11-02 22:13:29)

The UNIX Guru`s view of Sex:
unzip; strip; touch; finger; mount; fsck; more; yes; umount; sleep

19

Odp: gcc + sdl

jellonek: dobre zwyczaje to kwestia względna. funkcja celu jest taka, żeby program się skompilował. Jakbym chciał uczyć to poleciłbym jakiś podręcznik do basha.

=========================================
[www] https://nokturnal.pl
[ 16/32 bit Atari development wiki] https://bus-error.nokturnal.pl

20

Odp: gcc + sdl

Sorki Panowie, wprowadziłem trochę zamieszania, nie użyłem ' tylko coś co wyglądało jak: ´.

saulot napisał/a:

UWAGA: zwróć uwagę na apostrofy inaczej bash sypnie błędami i powie Ci f**k you.

Za wikipedia:
http://pl.wikipedia.org/wiki/Apostrof

"Poprawny z punktu widzenia typografii apostrof to ? ( tu się coś skaszaniło, przy edycji było OK ) (Unicode: U+2019). Jest to mały łuk, lekko pochylony od dołu po stronie lewej ku górze w prawo"

I tak wyglądający właśnie znak użyłem, tyle że nie U2019 lecz zapewne B4 ASCII, oczywiście próbowałem znaleźć inne znaki podobne czyli ' lub ` ale coś mi się nie udało. Dzisiaj mam w planach zejść do katakumb ( piwnicy ) i przynieść inną klawiaturę.

Ostatnio edytowany przez jury (2010-11-03 07:24:28)

21

Odp: gcc + sdl

ztcp ten znak - ` - nazywany jest "tick" czy cos podobnego
ale powtarzam - zamiast pisac gcc `sdl-config ...`, uzyj konstrukcji gcc $(sdl-config ...)

Ostatnio edytowany przez jellonek (2010-11-03 08:43:11)

The UNIX Guru`s view of Sex:
unzip; strip; touch; finger; mount; fsck; more; yes; umount; sleep

22

Odp: gcc + sdl

spoko, spoko, nie krzycz na mnie :P próbowałem i spokojnie działa, ale saulot też już podał wcześniej prawidłowe rozwiązanie

saulot napisał/a:

spróbuj:

gcc -Iścieżka do inkludów 1.c -o 1.prg -lSDL -lgem -lldg -lm -Lścieżka do libów

Tyle że jeszcze mi krzyczy o trzech undefined references więc coś nie tak mam jeszcze z samym środowiskiem.
Będę wieczorem walczył dalej, bo się nie poddam po tym jak poczytałem sobie co to SDL i jakie cuda umie :D

Ostatnio edytowany przez jury (2010-11-03 09:08:12)

23

Odp: gcc + sdl

jury: to może jeszcze przeklej logi, to przynajmniej będzie wiadomo czego brakuje.

=========================================
[www] https://nokturnal.pl
[ 16/32 bit Atari development wiki] https://bus-error.nokturnal.pl

24

Odp: gcc + sdl

Przekleiłbym jakby AA działało prawidłowo na Highwire :D
Kurka, fajna przeglądarka, ale jak to zwykle bywa w świecie 16-32-bit, porzucona 364 lata temu :)
Jak będę przy Falconie wieczorkiem to przepiszę i podeślę.
Kojarzę że coś chodziło o raczej popularną funkcję strlcpy, ale nie jestem na 100% pewien.

25

Odp: gcc + sdl

jury: są już pakiety rpm z nowszym autoconfem i automake'm etc.. na stronie Keitha Scrogginsa, jest też ldg. Nie wiem czy czytasz mintlistę.

=========================================
[www] https://nokturnal.pl
[ 16/32 bit Atari development wiki] https://bus-error.nokturnal.pl