I think the problem is the order of your arguments.
Instead of
main: $(OBJ)
g++ $(SDL) $(OBJ) -o main
try
main: $(OBJ)
g++ -o main $(OBJ) $(SDL)
While the position of -o main is not really important, the order of the link libraries is. Compilers resolve the symbols in the order the libraries appear on the command line.