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
,但它也最終給出了相同的錯誤。
由於看起來您已經定製安裝了GCC,所以您運行的'g ++'程序很可能來自系統,而不是您安裝的程序,這可能會使事情混淆。嘗試'哪個g ++'查看你運行的程序在哪個路徑中。 –
運行'which g ++'給出它在'/ opt/local/bin /'中。有區別嗎? (即使使用這個'g ++'也會得到同樣的錯誤)。 – user473973
是的,但是你真的在'/ opt/local/bin'或者安裝了'g ++'的系統中調用定製安裝的'g ++'嗎?你是否*寫* '/ opt/local/bin/g ++ ...'? –