Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ “编译错误”;“未定义的符号”;关于osx_C++_Macos_G++ - Fatal编程技术网

C++ “编译错误”;“未定义的符号”;关于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<

我正在osx上试用一个非常简单的cpp程序,只是为了让自己熟悉osx平台,所以遇到任何错误消息我都感到非常惊讶

代码如下:

#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