I’ve been making a small game using SDL on Linux. I can compile, link, and
run the program on Linux, but I also want to do that with cygwin on
Windows. When I try, the linker reports undefined references to all SDL,
SDL_image, and SDL_ttf functions that I use. I have installed all three
libraries and can compile, link, and run the SDL test programs.
The SDL libraries all seem to be available:
$ ls /usr/local/lib
libSDL.a libSDL_image.a libSDL_ttf.a libSDLmain.a pkgconfig
libSDL.dll.a libSDL_image.dll.a libSDL_ttf.dll.a libfreetype.a
libSDL.la libSDL_image.la libSDL_ttf.la libfreetype.la
The output from make on my program, minus some repeated undefined
reference errors (sorry if the line breaks are a bit wrong):
gcc -Wall -ggdb -O2 -I/usr/local/include/SDL -Dmain=SDL_main -I/usr/include/mingw -DWIN32 -Uunix -mno-cygwin -I/usr/local/include/SDL/ -c -o game.o game.c
gcc -Wall -ggdb -O2 -I/usr/local/include/SDL -Dmain=SDL_main -I/usr/include/mingw -DWIN32 -Uunix -mno-cygwin -I/usr/local/include/SDL/ -c -o main.o main.c
main.c: In function SDL_main': main.c:38: warning: assignment discards qualifiers from pointer target type gcc -Wall -ggdb -O2 -I/usr/local/include/SDL -Dmain=SDL_main -I/usr/include/mingw -DWIN32 -Uunix -mno-cygwin -I/usr/local/include/SDL/ -c -o player.o player.c gcc -Wall -fno-rtti -Uuinx -L/usr/local/lib -lmingw32 -lSDLmain -lSDL -mwindows -mno-cygwin -lSDL_ttf -lSDL_image -ggdb main.o game.o player.o -o main main.o(.text+0x6c): In function
SDL_main’:
/home/jjackowski/src/tank/main.c:38: undefined reference to _SDL_GetVideoInfo' main.o(.text+0xbe):/home/jjackowski/src/tank/main.c:60: undefined reference to
_SDL_SetVideoMode’
main.o(.text+0xf2):/home/jjackowski/src/tank/main.c:78: undefined reference to _TTF_Init' main.o(.text+0x10c):/home/jjackowski/src/tank/main.c:85: undefined reference to
_SDL_WM_SetCaption’
main.o(.text+0x12a):/home/jjackowski/src/tank/main.c:95: undefined reference to_SDL_GetTicks' main.o(.text+0x144):/home/jjackowski/src/tank/main.c:188: undefined reference to
_SDL_PollEvent’
main.o(.text+0x1d6):/home/jjackowski/src/tank/main.c:242: undefined reference to _SDL_PumpEvents' main.o(.text+0x210):/home/jjackowski/src/tank/main.c:247: undefined reference to
_TTF_Quit’
main.o(.text+0x22e):/home/jjackowski/src/tank/main.c:231: undefined reference to _SDL_Delay' main.o(.text+0x238):/home/jjackowski/src/tank/main.c:212: undefined reference to
_SDL_Flip’
main.o(.text+0x303):/home/jjackowski/src/tank/main.c:142: undefined reference to _SDL_WM_ToggleFullScreen' main.o(.text+0x3b4):/home/jjackowski/src/tank/main.c:175: undefined reference to
_SDL_SetVideoMode’
main.o(.text+0x41e):/home/jjackowski/src/tank/main.c:89: undefined reference to_TTF_Quit' game.o(.text+0xf): In function
GraphicReset’:
/home/jjackowski/src/tank/game.c:85: undefined reference to _IMG_Load' game.o(.text+0x3c):/home/jjackowski/src/tank/game.c:90: undefined reference to
_SDL_ConvertSurface’
game.o(.text+0x83):/home/jjackowski/src/tank/game.c:100: undefined reference to_SDL_MapRGBA' game.o(.text+0x148):/home/jjackowski/src/tank/game.c:108: undefined reference to
_TTF_OpenFont’
game.o(.text+0x176):/home/jjackowski/src/tank/game.c:111: undefined reference to _TTF_RenderText_Blended' game.o(.text+0x18c):/home/jjackowski/src/tank/game.c:106: undefined reference to
_TTF_CloseFont’
game.o(.text+0x196):/home/jjackowski/src/tank/game.c:97: undefined reference to_SDL_FreeSurface' game.o(.text+0x835): In function
IsCollidingTank’:
/home/jjackowski/src/tank/game.c:323: undefined reference to _SDL_FillRect' game.o(.text+0x946): In function
DrawTank’:
/home/jjackowski/src/tank/game.c:371: undefined reference to _SDL_FillRect' game.o(.text+0x9dc): In function
Render’:
/home/jjackowski/src/tank/game.c:399: undefined reference to _SDL_UpperBlit' game.o(.text+0xa47):/home/jjackowski/src/tank/game.c:445: undefined reference to
_SDL_UpdateRect’
game.o(.text+0xa78):/home/jjackowski/src/tank/game.c:439: undefined reference to _SDL_UpperBlit' game.o(.text+0xc8f): In function
GameUninit’:
/home/jjackowski/src/tank/game.c:450: undefined reference to _TTF_CloseFont' game.o(.text+0xc9c):/home/jjackowski/src/tank/game.c:451: undefined reference to
_SDL_FreeSurface’
player.o(.text+0x24): In function ReadPlayer': /home/jjackowski/src/tank/player.c:19: undefined reference to
_ntohl at 4’
player.o(.text+0x57):/home/jjackowski/src/tank/player.c:23: undefined reference to _ntohs at 4' player.o(.text+0xc4): In function
WritePlayer’:
/home/jjackowski/src/tank/player.c:41: undefined reference to _htonl at 4' player.o(.text+0xf7):/home/jjackowski/src/tank/player.c:45: undefined reference to
_htons at 4’
collect2: ld returned 1 exit status
make: *** [main] Error 1
How can I fix this problem? Thanks in advance for any help!–
Jeff Jackowski
http://ro.com/~jeffj/