2014-01-24 17 views
4

當我編譯我的程序與此:帶/ opt/local/bin/g ++的未定義符號__istype?

g++ -std=c++11 main.cpp -o run 

我得到這個錯誤(不知道,因爲我沒有在它與__istype使用任何代碼):

Undefined symbols for architecture x86_64: 
    "__istype(int, unsigned long)", referenced from: 
     std::ctype<char>::is(unsigned long, char) const in ccuyHAvU.o 
ld: symbol(s) not found for architecture x86_64 
collect2: error: ld returned 1 exit status 

我搜索並不能找到一個答案。有人建議,以包括libstdc++.a的完整路徑,但什麼也沒做:

g++ -std=c++11 main.cpp -o run /opt/local/lib/gcc48/libstdc++.a 

但是,當我在我的機器上編譯clang++,該程序的功能和編譯工作。

對於這個特定的項目,我必須使用g++(服務器沒有clang ++,但是有g ++ v4.8)。有什麼我可以做的嗎?

編輯:我試過which g++,看看我安裝的g++的位置。然後我運行命令/opt/local/bin/g++ -std=c++11 main.cpp -o run,但它也最終給出了相同的錯誤。

+0

由於看起來您已經定製安裝了GCC,所以您運行的'g ++'程序很可能來自系統,而不是您安裝的程序,這可能會使事情混淆。嘗試'哪個g ++'查看你運行的程序在哪個路徑中。 –

+0

運行'which g ++'給出它在'/ opt/local/bin /'中。有區別嗎? (即使使用這個'g ++'也會得到同樣的錯誤)。 – user473973

+0

是的,但是你真的在'/ opt/local/bin'或者安裝了'g ++'的系統中調用定製安裝的'g ++'嗎?你是否*寫* '/ opt/local/bin/g ++ ...'? –

回答