XCode で学校のプロジェクトを開発しています。最終製品はメイクファイルを含むソース コードで提出する必要があるため、作業コピーがあることを確認するために、メイクファイルを作成し、その方法でコンパイルを開始しました。これが私のメイクファイルです:
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
各オブジェクト ファイルのコンパイルは正常に機能しますが、「すべて」のリンク手順になると、標準ライブラリを認識していないように見えます。「cin」から「basic_string」、「operator new」までのすべてで「未定義のシンボル」エラーが発生します。
これらのことは直接示す必要はないと思っていましたし、実際に過去にそうする必要はありませんでした。
何が起こっているのでしょうか?
編集:
それが役立つ場合、これが(非常に長い)エラーメッセージの始まりです:
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