Wczoraj po raz pierwszy zainstalowałem sobie linuxa (wybrałem najnowszą stabilną wersję openSUSE). Udało mi się zainstalować kompilator do C/C++, ale przy próbie kompilacji programu wykorzystującego SDL otrzymałem taki błąd:
kamil@linux-rcae:~/Pobrane/PacManSzablon> make -f Makefile.linux
g++ -O2 -I./sdl/include -L. -o main main.cpp -lm -lSDL -lpthread -ldl
In file included from /usr/include/stdio.h:34:0,
from main.cpp:10:
/usr/lib64/gcc/x86_64-suse-linux/4.7/include/stddef.h:213:23: error: conflicting declaration ‘typedef long unsigned int size_t’
In file included from ./sdl/include/SDL_config.h:42:0,
from ./sdl/include/SDL_stdinc.h:28,
from ./sdl/include/SDL_main.h:26,
from ./sdl/include/SDL.h:28,
from main.cpp:6:
./sdl/include/SDL_config_minimal.h:38:22: error: ‘size_t’ has a previous declaration as ‘typedef unsigned int size_t’
make: *** [main] Błąd 1
U koleżanki z jakąś dystrybucją Fedory ten sam kod z tą samą biblioteką zadziałał. Zmieniłem typ w pliku SDL_config_minimal.h i otrzymałem kolejny błąd:
kamil@linux-rcae:~/Pobrane/PacManSzablon> make -f Makefile.linux
g++ -O2 -I./sdl/include -L. -o main main.cpp -lm -lSDL -lpthread -ldl
/usr/lib64/gcc/x86_64-suse-linux/4.7/../../../../x86_64-suse-linux/bin/ld: skipping incompatible ./libSDL.a when searching for -lSDL
/usr/lib64/gcc/x86_64-suse-linux/4.7/../../../../x86_64-suse-linux/bin/ld: cannot find -lSDL
collect2: error: ld returned 1 exit status
make: *** [main] Błąd 1
Ktoś mi zasugerował, że moje problemy mogą być związane z tym, że mam 64-bitowego linuksa i żeby poszukać "cross compiling". Znalazłem informację, że wystarczy użyć configure z parametrem --target=x86. Dało to taki efekt:
kamil@linux-rcae:~/Pobrane/PacManSzablon> configure --target=x86
If 'configure' is not a typo you can use command-not-found to lookup the package that contains it, like this:
cnf configure
Polecenie cnf też nic nie znalazło. Zarówno z SDL jak i z (zwłaszcza) Linuxem znam się dość kiepsko. Co robię nie tak?