Mac에서 SDL 응용프로그램 컴파일하기
SDL 홈페이지의 안내 문서에 나와있는 간단한 코드를 컴파일해 보자.
단 Xcode는 쓰지 않는다.
-
// sdltest.cc
-
-
#include <stdlib.h>
-
#include <SDL.h>
-
-
int main(int argc, char *argv[])
-
{
-
SDL_Surface *screen;
-
-
screen = SDL_SetVideoMode(640, 480, 16, SDL_SWSURFACE);
-
if ( screen == NULL ) {
-
fprintf(stderr, "Unable to set 640×480 video: %s\n", SDL_GetError());
-
exit(1);
-
}
-
-
getchar(); // 호빵님이 추가
-
}
라이브러리 경로 같은 것들 때문에 좀 귀찮으니 Makefile도 만들어주자.
CXX = g++
INC = /opt/local/include/SDL
LIBDIR = /opt/local/libsdltest: sdltest.o
$(CXX) -o sdltest sdltest.o -L$(LIBDIR) -lSDLsdltest.o: sdltest.cc
$(CXX) -c sdltest.cc -I$(INC)clean:
rm sdltest.o
(들여쓰기 엄수. 블로그에선 제대로 표시가 안되니… Makefile 작성 요령을 모르겠다면 알아서 찾아보자.)
그러면 이런 오류 메시지가 보일 것이다.

문제 해결하기
이유는 모르겠지만, Mac으로 이식된 SDL은 SDL_main이라는 함수를 따로 만들어 시작점을 관리하고 있다. 뭐 깊이 생각할 필요는 없고, 해결책이나 찾아보자.
가장 간단한 방법은 Makefile을 이렇게 바꾸는 것이다.
CXX = g++
INC = `sdl-config –cflags`
LIB = `sdl-config –libs`sdltest: sdltest.o
$(CXX) -o sdltest sdltest.o $(LIB)sdltest.o: sdltest.cc
$(CXX) -c sdltest.cc $(INC)clean:
rm sdltest.o
헤더 경로와 라이브러리 경로를 sdl-config라는 쉘스크립트를 써서 자동으로 구해 오는 것이다. `sdl-config ~~ 에서 열고 닫는 문자는 qwerty 자판(보통 자판) 기준으로 L옆에 있는 것이 아니라 ESC 밑에 있는 그 문자이니 주의.
특별히 다른 문제가 없다면(이를테면 SDL이 설치돼 있지 않은 바보같은 경우라던가…) 무사히 컴파일이 될 것이다.

SDL 컴파일 성공 스크린샷
(뒤에 시커먼 윈도우가 SDL 윈도우)
NSQuickDrawView가 Quartz로 바뀌었으니 앞으로 쓰지마… 라는 경고가 보이지만 내가 어떻게 할 수 있는 부분은 아니다.
addition.
hoppangbook:sdl hoppang$ sdl-config –cflags
-I/opt/local/include/SDL -D_GNU_SOURCE=1 -D_THREAD_SAFE
hoppangbook:sdl hoppang$ sdl-config –libs
-L/opt/local/lib -lSDLmain -lSDL -Wl,-framework,Cocoa
내 맥북의 경우다.