Clang编译器错误,适用于非常简单的程序

Clang compiler error for very simple program

本文关键字:简单 程序 非常 适用于 编译器 错误 Clang      更新时间:2023-10-16

我正在尝试开始使用c++。我在安装了小牛操作系统的mac上。

我试图编译的程序是:

#include <iostream>
int main()
{
std::cout << "Enter two numbers:" << std::endl;
return 0;
}

这是cc:的版本

Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn)
Target: x86_64-apple-darwin13.0.0
Thread model: posix

然而,当我尝试编译时:

cc test.cc

我得到以下错误:

...
std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::operator<<<std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*) in test-AeQQK5.o
___clang_call_terminate in test-AeQQK5.o
"___cxa_end_catch", referenced from:
std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::operator<<<std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*) in test-AeQQK5.o
"___gxx_personality_v0", referenced from:
std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::operator<<<std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*) in test-AeQQK5.o
std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> > std::__1::__pad_and_output<char, std::__1::char_traits<char> >(std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> >, char const*, char const*, char const*, std::__1::ios_base&, char) in test-AeQQK5.o
Dwarf Exception Unwind Info (__eh_frame) in test-AeQQK5.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我做错了什么?

您正在将其编译为C程序。将其编译为C++程序:

c++测试.cc

最好也加入一些警告标志:

c++-Wall-Wextra-迂腐错误测试.cc

您需要运行clang++,而不仅仅是clang

虽然用gcc编译C++源*.cc是完全可以的(它将具有该扩展名的文件视为C++源),但链接器也需要明确的信息来链接到正确的C++库。

(注意:我认为clang和gcc在这个问题上是相似的)