¿Qué significa el error en tiempo de compilación "Símbolos indefinidos para la arquitectura x86_64"?

Estoy tratando de programar una clase gráfica usando una lista adyacente de un ejemplo en mi libro de texto de C ++, y cuando compilo usando este comando: Código: g ++ -o prog program.cpp ... obtengo el siguiente error:

Undefined symbols for architecture x86_64:
  "_main", referenced from:
      start in crt1.10.6.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status

... ¿qué demonios significa esto? Puede resultar un problema con mi código, pero siento que puede ser más profundo que eso, porque he recibido este mismo error aparentemente inexplicable para varios proyectos diferentes, muchos de los cuales se resolvieron de diferentes maneras, y desafortunadamente completamente por accidente

Leí en alguna parte que puede tener que ver con si estoy usando bibliotecas de 32 o 64 bits, y que las etiquetas -m32 o -m64 pueden necesitar ser utilizadas, pero no estoy seguro de si esto se aplica aquí. Curiosamente, cuando intenté agregar la etiqueta -m64 obtuve el mismo error exacto, pero cuando intenté usar la etiqueta -m32 obtuve el mismo error, excepto que decía

Undefined symbols for architecture i386:
  "_main", referenced from:
      start in crt1.10.6.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status

en lugar

Principalmente solo quiero saber qué demonios dice el error. Estoy acostumbrado a depurar errores en tiempo de compilación que dan una línea específica en el código, etc., pero no puedo discernir nada de eso a partir de esto. ¿Algunas ideas

Si ayuda, estoy usando una Macbook de finales de 2008 con Intel Core 2 Duo (de 64 bits), y estoy usando OS X Lion (10.7.2), que creo que es la última versión. Además, estoy usando gcc versión 4.2.1.

Respuestas a la pregunta(2)

Su respuesta a la pregunta