#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include "SDL.h"
#include <iostream.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
if (SDL_Init(SDL_INIT_VIDEO) < 0) {
cout << "Unable to initialize SDL.\n";
cout << "Reason: " << SDL_GetError();
exit(1);
}
atexit(SDL_Quit);
cout << "Initialization succeeded!!";
return 0;
}
This compiles, but I can''t link it.
I get: undefined reference to ''SDL_Init''. Then I thought. I probably have to add some lib somewhere. So I found you could set the project properties. I typed in the lib path of SDL: /usr/lib/libSDL.so. I don''t know if this is the right one, but when I link now it gives the following undefined references: ''pthread_create'', ''pthread_cancel'', ''sem_destroy'', ''sem_wait'', ... and a lot more (pthread_* and sem_*).
Do I need to include other libs? I''ve installed both the development and binary runtime of SDL.
Any help would be appreciated.
Btw, I''ve also tried to link in the console with ld, but it gave the same troubles.
Linking problems
Hi,
I''m just new to Linux programming and tried to make a little "game" with SDL. I use KDevelop and entered the following little code:
On the linking stage you need these options....
gcc -o binary myfile.o -lSDL -lpthread
Should take care of the problem
gcc -o binary myfile.o -lSDL -lpthread
Should take care of the problem
Thank you very much!! It works now. Now I can finally make some games in Linux .
For your further reference you can type the following:
#sdl-config --libs
-L/usr/local/lib -Wl,-rpath,/usr/local/lib -lSDL -lpthread
#sdl-config --cflags
-I/usr/local/include -I/usr/local/include/SDL -D_REENTRANT
YMMV. That's the whole point. That's why my Makefiles always look like this:
See, this way sdl-config gives you the correct flags on any configuration.
-benc
Edited by - shelrem on November 22, 2000 2:02:43 PM
#sdl-config --libs
-L/usr/local/lib -Wl,-rpath,/usr/local/lib -lSDL -lpthread
#sdl-config --cflags
-I/usr/local/include -I/usr/local/include/SDL -D_REENTRANT
YMMV. That's the whole point. That's why my Makefiles always look like this:
CC = g++LIBS = display.o input.o#Obtain the flags required to compile with SDLSDL_CFLAGS = `sdl-config --cflags`SDL_LIBS = `sdl-config --libs`#Any other compiler optionsCC_OPTIONS = -Wall -O2 -DDEBUG -g## First and default rule#main: main.cpp config.h ${LIBS} ${CC} ${CC_OPTIONS} ${SDL_CFLAGS} ${SDL_LIBS} -o main ${LIBS} main.cpp#display.o: display.cpp display.hpp config.h ${CC} ${CC_OPTIONS} ${SDL_CFLAGS} -o display.o -c display.cpp#input.o: input.cpp input.hpp config.h ${CC} ${CC_OPTIONS} ${SDL_CFLAGS} -o input.o -c input.cpp
See, this way sdl-config gives you the correct flags on any configuration.
-benc
Edited by - shelrem on November 22, 2000 2:02:43 PM
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement
Recommended Tutorials
Advertisement