I am developing a school project in Xcode. The final product should be sent to the source code with the make file, so I wrote a make file and started compiling this path to make sure I have a working copy. Here is my 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
Compiling each of the object files works fine, but when it switches to "everything", the linking stage does not seem to know the standard library. I get an error of "undefined characters" for each of "cin", "basic_string", "operator new".
I got the impression that these things did not need to be specified directly, but in fact it was not necessary to do this in the past.
Any idea what could happen?
EDIT:
If this helps, here is the start of a (very long) error message:
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