【发布时间】:2014-01-24 13:25:08
【问题描述】:
当我用这个编译我的程序时:
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++程序很可能来自系统,而不是您安装的程序,这可能会造成混淆。尝试例如which g++查看你运行的程序在哪个路径。 -
运行
which g++表明它在/opt/local/bin/中。有区别吗? (即使使用此g++仍然会出现相同的错误)。 -
是的,但是您真的是在调用
/opt/local/bin中的自定义安装g++还是系统安装g++?你真的在写吗?/opt/local/bin/g++ ...? -
是的,我正在这样做。我的完整命令是
/opt/local/bin/g++ -std=c++11 main.cpp -o run。它也给出了同样的错误。 -
好的。您可能需要编辑问题以包含该信息。