我一直在XCode開發一個學校項目。最終產品必須在源代碼中用makefile提交,所以我寫了一個makefile並開始編譯,以確保我有一個工作副本。這裏是我的makefile:GCC鏈接器找不到標準庫?
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
對不起,這確實解決了這個愚蠢的問題。這只是令人沮喪的,因爲之前我已經使用過GCC for C++,而且我的講師告訴我們GCC和G ++在必要時會互相調用,並且基本相同。非常感謝! – xanderflood