【问题标题】:GCC: Getting ld: symbol(s) not found for architecture x86_64 error on OS X 10.11.5 [duplicate]GCC:获取 ld:在 OS X 10.11.5 上找不到架构 x86_64 错误的符号 [重复]
【发布时间】:2016-06-22 18:01:57
【问题描述】:

我一直在尝试运行我在互联网上看到的一个简单的矢量代码,以了解矢量的工作原理。

#include <iostream>
#include <vector>
using namespace std;

int main(int argc, char** argv) {
    /*  Initialize vector of 10 copies of the integer 5 */

    vector<int> vectorOne(10,5);

    /*  run through the vector and display each element, if possible */

    for (long index=0; index<20; ++index) {
        try {
            cout << "Element " << index << ": " << vectorOne.at(index) << endl;
        }
        catch (exception& e) {
            cout << "Element " << index << ": index exceeds vector dimensions." << endl;
        }
    }
    return EXIT_SUCCESS;
}

但是每次我尝试在系统上编译代码时,我都会收到以下错误:

Undefined symbols for architecture x86_64:
  "std::__1::__vector_base_common<true>::__throw_length_error() const", referenced from:
      std::__1::vector<int, std::__1::allocator<int> >::allocate(unsigned long) in test1-6d0822.o
  "std::__1::__vector_base_common<true>::__throw_out_of_range() const", referenced from:
      std::__1::vector<int, std::__1::allocator<int> >::at(unsigned long) in test1-6d0822.o
  "std::__1::locale::use_facet(std::__1::locale::id&) const", referenced from:
      std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::endl<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) in test1-6d0822.o
      std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in test1-6d0822.o
  "std::__1::ios_base::getloc() const", referenced from:
      std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::endl<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) in test1-6d0822.o
      std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in test1-6d0822.o
  "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__init(unsigned long, char)", referenced from:
      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 test1-6d0822.o
  "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_string()", referenced from:
      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 test1-6d0822.o
  "std::__1::basic_ostream<char, std::__1::char_traits<char> >::put(char)", referenced from:
      std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::endl<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) in test1-6d0822.o
  "std::__1::basic_ostream<char, std::__1::char_traits<char> >::flush()", referenced from:
      std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::endl<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) in test1-6d0822.o
  "std::__1::basic_ostream<char, std::__1::char_traits<char> >::sentry::sentry(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)", referenced from:
      std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in test1-6d0822.o
  "std::__1::basic_ostream<char, std::__1::char_traits<char> >::sentry::~sentry()", referenced from:
      std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in test1-6d0822.o
  "std::__1::basic_ostream<char, std::__1::char_traits<char> >::operator<<(int)", referenced from:
      _main in test1-6d0822.o
  "std::__1::basic_ostream<char, std::__1::char_traits<char> >::operator<<(long)", referenced from:
      _main in test1-6d0822.o
  "std::__1::cout", referenced from:
      _main in test1-6d0822.o
  "std::__1::ctype<char>::id", referenced from:
      std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::endl<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) in test1-6d0822.o
      std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in test1-6d0822.o
  "std::__1::locale::~locale()", referenced from:
      std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::endl<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) in test1-6d0822.o
      std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in test1-6d0822.o
  "std::__1::ios_base::__set_badbit_and_consider_rethrow()", referenced from:
      std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in test1-6d0822.o
  "std::__1::ios_base::clear(unsigned int)", referenced from:
      std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in test1-6d0822.o
  "std::terminate()", referenced from:
      ___clang_call_terminate in test1-6d0822.o
  "typeinfo for std::exception", referenced from:
      GCC_except_table0 in test1-6d0822.o
  "operator delete(void*)", referenced from:
      std::__1::__vector_base<int, std::__1::allocator<int> >::~__vector_base() in test1-6d0822.o
  "operator new(unsigned long)", referenced from:
      std::__1::vector<int, std::__1::allocator<int> >::allocate(unsigned long) in test1-6d0822.o
  "___cxa_begin_catch", referenced from:
      _main in test1-6d0822.o
      ___clang_call_terminate in test1-6d0822.o
      std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in test1-6d0822.o
  "___cxa_end_catch", referenced from:
      _main in test1-6d0822.o
      std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in test1-6d0822.o
  "___gxx_personality_v0", referenced from:
      _main in test1-6d0822.o
      std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::endl<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) in test1-6d0822.o
      std::__1::vector<int, std::__1::allocator<int> >::vector(unsigned long, int const&) in test1-6d0822.o
      std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in test1-6d0822.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 test1-6d0822.o
      Dwarf Exception Unwind Info (__eh_frame) in test1-6d0822.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我不知道问题出在哪里,如果能帮助我了解问题所在,我将不胜感激,如果可能的话,请帮助我将来如何调试。问题在于向量的声明和使用。提前致谢。

编辑: 我用来编译的命令是:

gcc test1.cpp -o test

文件名为 test1.cpp

【问题讨论】:

    标签: c++ gcc vector


    【解决方案1】:

    您的代码使用 clang 对我来说效果很好。 你的编译命令是什么?

    试试

    g++ test1.cpp -o test
    

    这对我有用。

    【讨论】:

    • 添加编译命令
    • 尝试使用 g++ 命令。
    • 遇到了同样的问题。有人知道为什么g++ 可以工作,而clang 在 Mac 上不行吗?
    • Clang 应该可以正常工作。你试过 clang++ 命令吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-21
    • 1970-01-01
    相关资源
    最近更新 更多