O vinculador GCC não consegue encontrar a biblioteca padrão?

Estou desenvolvendo um projeto escolar no XCode. O produto final deve ser enviado no código-fonte com um makefile, então escrevi um makefile e comecei a compilar dessa maneira, para garantir que eu tivesse uma cópia de trabalho. Aqui está o meu makefile:

all: main.o StackList.o world.o Farm.o
        gcc main.o StackList.o world.o Farm.o -g -o Project1

main.o:
        gcc -g -c main.cpp

StackList.o:
        gcc -g -c Stacklist.cpp

world.cpp:
        gcc -g -c world.cpp

Farm.cpp:
        gcc -g -c Farm.cpp

clean:
        rm *.o Project1

Compilar cada um dos arquivos de objeto funciona bem, mas quando chega a "todos", a etapa de vinculação, parece não estar ciente da biblioteca padrão. Eu recebo o erro "símbolos indefinidos" para tudo, desde "cin" até "basic_string" e "operator new".

Tive a impressão de que essas coisas não precisavam ser indicadas diretamente e, de fato, não precisavam fazê-lo no passad

Alguma idéia do que pode estar acontecendo?

EDITAR

Se ajudar, aqui está o início da (muito longa) mensagem de erro:

Undefined symbols for architecture x86_64:
  "std::cin", referenced from:
  _main in main.o
  "std::cout", referenced from:
      _main in main.o
      Farm::print(int)  in Farm.o
  "std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char>, std::allocator<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)", referenced from:
      _main in main.o
  "std::ios_base::Init::Init()", referenced from:
      __static_initialization_and_destruction_0(int, int)in main.o
      __static_initialization_and_destruction_0(int, int)in StackList.o
      __static_initialization_and_destruction_0(int, int)in world.o
      __static_initialization_and_destruction_0(int, int)in Farm.o
  "std::ios_base::Init::~Init()", referenced from:
      ___tcf_0 in main.o
      ___tcf_0 in StackList.o
      ___tcf_0 in world.o
      ___tcf_0 in Farm.o
  "operator new(unsigned long)", referenced from:
      doStackSearch(std::basic_istream<char, std::char_traits<char> >*, std::list<Farm*, std::allocator<Farm*> >*&)in world.o

questionAnswers(6)

yourAnswerToTheQuestion