Ошибка связывания компиляции С++ в OS X

Я пытаюсь скомпилировать пример программы C++ в OS X на терминале, однако сталкиваюсь с ошибкой, которую не понимаю.

Мой исходный код выглядит так:

#include <iostream>

using namespace std;

const int NUMBER = 12;

int main ()
{
  int firstNum;
    int secondNum;

    firstNum = 18;

    cout << "Line 9; firstNum = " << firstNum << endl;

    cout << "Line 10: Enter an integer: ";
    cin >> secondNum;
    cout << endl;

    cout << "Line 13: secondNum = " << secondNum << endl;

    firstNum = firstNum + NUMBER + 2 * secondNum;

    cout << "Line 15: The new value of " << "firstNum = " << firstNum << endl;

  return 0;
}

и я строю это так:

$ cc -Wall -v -o example example.cpp

Вот ошибка, которую я получаю:

Apple LLVM version 6.0 (clang-600.0.56) (based on LLVM 3.5svn)
Target: x86_64-apple-darwin14.1.0
Thread model: posix
 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" -cc1 -triple x86_64-apple-macosx10.10.0 -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -main-file-name example.cpp -mrelocation-model pic -pic-level 2 -mdisable-fp-elim -masm-verbose -munwind-tables -target-cpu core2 -target-linker-version 241.9 -v -resource-dir /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.0 -cxx-isystem /usr/include/c++/4.2.1 -stdlib=libc++ -Wall -fdeprecated-macro -fdebug-compilation-dir /Users/mattandrews/projects/cpp-codes -ferror-limit 19 -fmessage-length 161 -stack-protector 1 -mstackrealign -fblocks -fobjc-runtime=macosx-10.10.0 -fencode-extended-block-signature -fcxx-exceptions -fexceptions -fdiagnostics-show-option -fcolor-diagnostics -vectorize-slp -o /var/folders/7g/mxwtz9zn2f797v601x7s12zm0000gn/T/example-568d29.o -x c++ example.cpp
clang -cc1 version 6.0 based upon LLVM 3.5svn default target x86_64-apple-darwin14.1.0
ignoring nonexistent directory "/usr/include/c++/v1"
#include "..." search starts here:
#include <...> search starts here:
 /usr/include/c++/4.2.1
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1
 /usr/local/include
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.0/include
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include
 /usr/include
 /System/Library/Frameworks (framework directory)
 /Library/Frameworks (framework directory)
End of search list.
 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld" -demangle -dynamic -arch x86_64 -macosx_version_min 10.10.0 -o example /var/folders/7g/mxwtz9zn2f797v601x7s12zm0000gn/T/example-568d29.o -lSystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.0/lib/darwin/libclang_rt.osx.a
Undefined symbols for architecture x86_64:
  "std::istream::operator>>(int&)", referenced from:
      _main in example-568d29.o
  "std::ostream::operator<<(std::ostream& (*)(std::ostream&))", referenced from:
      _main in example-568d29.o
  "std::ostream::operator<<(int)", referenced from:
      _main in example-568d29.o
  "std::ios_base::Init::Init()", referenced from:
      ___cxx_global_var_init in example-568d29.o
  "std::ios_base::Init::~Init()", referenced from:
      ___cxx_global_var_init in example-568d29.o
  "std::cin", referenced from:
      _main in example-568d29.o
  "std::cout", referenced from:
      _main in example-568d29.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 example-568d29.o
  "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 example-568d29.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Я использую cc для компиляции, но, похоже, он не может подобрать стандартную библиотеку C++. Я установил CPLUS_INCLUDE_PATH в /usr/include/c++/4.2.1, где находится библиотека, но ошибка сохраняется.

Я попытался скомпилировать в Xcode, и он работал нормально, но я хочу иметь возможность компилировать в командной строке.

Как правильно связать стандартную библиотеку C++ в командной строке?


person oorst    schedule 27.04.2015    source источник
comment
Кажется, это не слишком долго, чтобы писать здесь. Люди постоянно публикуют более длинные материалы.   -  person Tim Seguine    schedule 27.04.2015
comment
И если он слишком длинный для размещения здесь, то он также слишком длинный для ссылки. На вас лежит бремя сделать ваш вопрос понятным и читабельным.   -  person jalf    schedule 27.04.2015
comment
Я отредактировал ваш вопрос, чтобы добавить информацию из сути. :)   -  person jalf    schedule 27.04.2015
comment
Вам вообще не нужно устанавливать CPLUS_INCLUDE_PATH. Если ваша программа не компилируется без изменения путей компилятора, ваша установка не работает.   -  person molbdnilo    schedule 27.04.2015
comment
Я проверил предыдущий вопрос. Решил проблему. Спасибо @jalf за редактирование.   -  person oorst    schedule 28.04.2015