C++ “编译错误”;“未定义的符号”;关于osx
我正在osx上试用一个非常简单的cpp程序,只是为了让自己熟悉osx平台,所以遇到任何错误消息我都感到非常惊讶 代码如下:C++ “编译错误”;“未定义的符号”;关于osx,c++,macos,g++,C++,Macos,G++,我正在osx上试用一个非常简单的cpp程序,只是为了让自己熟悉osx平台,所以遇到任何错误消息我都感到非常惊讶 代码如下: #include <iostream> using namespace std; int main() { cout << "Hello, world!" << endl; return 0; } 然后我得到了“未定义符号”的信息: Undefined symbols: "std::basic_ostream<
#include <iostream>
using namespace std;
int main() {
cout << "Hello, world!" << endl;
return 0;
}
然后我得到了“未定义符号”的信息:
Undefined symbols:
"std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)", referenced from:
_main in ccA9oElQ.o
"std::ios_base::Init::Init()", referenced from:
__static_initialization_and_destruction_0(int, int)in ccA9oElQ.o
"std::basic_string<char, std::char_traits<char>, std::allocator<char> >::size() const", referenced from:
std::__verify_grouping(char const*, unsigned long, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)in ccA9oElQ.o
"std::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator[](unsigned long) const", referenced from:
std::__verify_grouping(char const*, unsigned long, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)in ccA9oElQ.o
std::__verify_grouping(char const*, unsigned long, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)in ccA9oElQ.o
std::__verify_grouping(char const*, unsigned long, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)in ccA9oElQ.o
"___gxx_personality_v0", referenced from:
std::__verify_grouping(char const*, unsigned long, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)in ccA9oElQ.o
_main in ccA9oElQ.o
___tcf_0 in ccA9oElQ.o
unsigned long const& std::min<unsigned long>(unsigned long const&, unsigned long const&)in ccA9oElQ.o
__static_initialization_and_destruction_0(int, int)in ccA9oElQ.o
global constructors keyed to mainin ccA9oElQ.o
CIE in ccA9oElQ.o
"std::ios_base::Init::~Init()", referenced from:
___tcf_0 in ccA9oElQ.o
"std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)", referenced from:
_main in ccA9oElQ.o
"std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&))", referenced from:
_main in ccA9oElQ.o
"std::cout", referenced from:
_main in ccA9oElQ.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
系统信息
$ uname -a
Darwin mbp002.local 10.7.0 Darwin Kernel Version 10.7.0: Sat Jan 29 15:17:16 PST 2011; root:xnu-1504.9.37~1/RELEASE_I386 i386
<>使用<代码> g++< /COD>而不是<代码> GCC >因为编译C++程序:
g++ -Wall hello.cpp -o hello
或者,使用clang++
,因为苹果已经有一段时间没有更新GCC了,而且他们也不太可能更新它:
clang++ -Wall hello.cpp -o hello
用g运行它++
g++ -Wall hello.cpp -o hello
如果使用GCC,默认情况下,C++库没有链接。
@ KIILL不,不是!!(但是是的,是的)@bevariable:谢谢你的回答!当我尝试“clang++”时,出现了“未找到命令”错误。虽然我可以调用clang,但它给了我一大堆错误信息。(我想这是gcc和g++之间的问题?!)@Anthony你没有/usr/bin/clang++
?在XCODEL 4中没有安装命令行实用程序,可能XCODE 3没有安装代码> CLAN++/CODE >,因为Clang中的C++支持是相当新的。如果我没记错的话,命令行实用程序是可选安装。或者,从macports获取gcc4.6。只是更新:在最新版本的xcode中,建议通过xcrun调用构建工具。因此,对于clang++来说,它是xRun clang++选项
clang++ -Wall hello.cpp -o hello
g++ -Wall hello.cpp -o hello