Here's the code. #include <stdio.h> #include "usr/include/SDL/SDL.h" SDL_Surface *screen; SDL_Event event; bool done = false; int main(void) { SDL_Init(SDL_INIT_VIDEO); SDL_WM_SetCaption("\"Hello, World!\"", "\"Hello, World!\""); screen = SDL_SetVideoMode(640, 480, 8, SDL_SWSURFACE); while(!done) { SDL_Flip(screen); if(event.type == SDL_QUIT) { done = true; } } SDL_Quit(); return 0; } This next one is from the manual. #include "usr/include/SDL/SDL.h" /* All SDL App's need this */ #include <stdio.h> int main() { printf("Initializing SDL.\n"); /* Initialize defaults, Video and Audio */ if((SDL_Init(SDL_INIT_VIDEO|SDL_INIT_AUDIO)==-1)) { printf("Could not initialize SDL: %s.\n", SDL_GetError()); exit(-1); } printf("SDL initialized.\n"); printf("Quiting SDL.\n"); /* Shutdown all subsystems */ SDL_Quit(); printf("Quiting....\n"); exit(0); } Then the compiler output for the first one is samgj@samgj:~/sdltest$ g++ sdltest.c -o sdltest /tmp/ccaCl8C5.o: In function `main': sdltest.c:(.text+0x11): undefined reference to `SDL_Init' sdltest.c:(.text+0x25): undefined reference to `SDL_WM_SetCaption' sdltest.c:(.text+0x49): undefined reference to `SDL_SetVideoMode' sdltest.c:(.text+0x5d): undefined reference to `SDL_Flip' sdltest.c:(.text+0x82): undefined reference to `SDL_Quit' collect2: ld returned 1 exit status But then this program compiles fine. #include "usr/include/SDL/SDL.h" #include <stdio.h> int main { printf("Hello, World!"); return 0; } I use Debian 6.0.4 which had sdl and sdl-dev instaled automatically. In my subdirectory I have the header files from the SDL website that's what '#include "usr/include/SDL/SDL.h"'