【问题标题】:Undefined symbols for architecture x86_64 c++ on MacMac 上架构 x86_64 c++ 的未定义符号
【发布时间】:2015-06-17 21:53:23
【问题描述】:

您好,我在 Macintosh 上的 Netbeans 中用 C++ 编写了一个程序,它使用这些包括 - iostream、fstream、string 和 cstdlib。该程序在 Netbeans 中编译良好,但我需要使用 gcc 编译和运行它,因为我需要将图像文件传递给终端中的程序。

当我尝试编译时,我得到了下面的错误,老实说,我完全不知道发生了什么。名称空间似乎有问题?有谁能帮忙吗?

谢谢!

    Macintosh-2:ImageTool root$ gcc main.cpp -o main.out
Undefined symbols for architecture x86_64:
  "std::__1::locale::has_facet(std::__1::locale::id&) const", referenced from:
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::basic_filebuf() in main-f0eaa5.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 main-f0eaa5.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 main-f0eaa5.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::imbue(std::__1::locale const&) in main-f0eaa5.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::basic_filebuf() in main-f0eaa5.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 main-f0eaa5.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 main-f0eaa5.o
  "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__init(char const*, unsigned long)", referenced from:
      Partition_Info::getFileSystemType() in main-f0eaa5.o
      DirectoryEntry::getNameOfFile() in main-f0eaa5.o
      FileContents::getFileContents() in main-f0eaa5.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 main-f0eaa5.o
  "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::assign(char const*)", referenced from:
      Partition_Info::getFileSystemType() in main-f0eaa5.o
  "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_string()", referenced from:
      Partition_Info::getFileSystemType() in main-f0eaa5.o
      _main in main-f0eaa5.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 main-f0eaa5.o
  "std::__1::basic_istream<char, std::__1::char_traits<char> >::read(char*, long)", referenced from:
      _main in main-f0eaa5.o
  "std::__1::basic_istream<char, std::__1::char_traits<char> >::seekg(long long, std::__1::ios_base::seekdir)", referenced from:
      _main in main-f0eaa5.o
  "std::__1::basic_istream<char, std::__1::char_traits<char> >::~basic_istream()", referenced from:
      construction vtable for std::__1::basic_istream<char, std::__1::char_traits<char> >-in-std::__1::basic_ifstream<char, std::__1::char_traits<char> > in main-f0eaa5.o
  "std::__1::basic_istream<char, std::__1::char_traits<char> >::~basic_istream()", referenced from:
      construction vtable for std::__1::basic_istream<char, std::__1::char_traits<char> >-in-std::__1::basic_ifstream<char, std::__1::char_traits<char> > in main-f0eaa5.o
  "std::__1::basic_istream<char, std::__1::char_traits<char> >::~basic_istream()", referenced from:
      _main in main-f0eaa5.o
      std::__1::basic_ifstream<char, std::__1::char_traits<char> >::~basic_ifstream() in main-f0eaa5.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 main-f0eaa5.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 main-f0eaa5.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 main-f0eaa5.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 main-f0eaa5.o
  "std::__1::basic_ostream<char, std::__1::char_traits<char> >::operator<<(bool)", referenced from:
      _main in main-f0eaa5.o
  "std::__1::basic_ostream<char, std::__1::char_traits<char> >::operator<<(int)", referenced from:
      _main in main-f0eaa5.o
  "std::__1::basic_ostream<char, std::__1::char_traits<char> >::operator<<(unsigned int)", referenced from:
      _main in main-f0eaa5.o
  "std::__1::basic_streambuf<char, std::__1::char_traits<char> >::uflow()", referenced from:
      vtable for std::__1::basic_filebuf<char, std::__1::char_traits<char> > in main-f0eaa5.o
  "std::__1::basic_streambuf<char, std::__1::char_traits<char> >::xsgetn(char*, long)", referenced from:
      vtable for std::__1::basic_filebuf<char, std::__1::char_traits<char> > in main-f0eaa5.o
  "std::__1::basic_streambuf<char, std::__1::char_traits<char> >::xsputn(char const*, long)", referenced from:
      vtable for std::__1::basic_filebuf<char, std::__1::char_traits<char> > in main-f0eaa5.o
  "std::__1::basic_streambuf<char, std::__1::char_traits<char> >::showmanyc()", referenced from:
      vtable for std::__1::basic_filebuf<char, std::__1::char_traits<char> > in main-f0eaa5.o
  "std::__1::basic_streambuf<char, std::__1::char_traits<char> >::basic_streambuf()", referenced from:
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::basic_filebuf() in main-f0eaa5.o
  "std::__1::basic_streambuf<char, std::__1::char_traits<char> >::~basic_streambuf()", referenced from:
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::~basic_filebuf() in main-f0eaa5.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::basic_filebuf() in main-f0eaa5.o
  "std::__1::cout", referenced from:
      _main in main-f0eaa5.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 main-f0eaa5.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 main-f0eaa5.o
  "std::__1::locale::locale(std::__1::locale const&)", referenced from:
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::basic_filebuf() in main-f0eaa5.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 main-f0eaa5.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 main-f0eaa5.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::basic_filebuf() in main-f0eaa5.o
  "std::__1::codecvt<char, char, __mbstate_t>::id", referenced from:
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::imbue(std::__1::locale const&) in main-f0eaa5.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::basic_filebuf() in main-f0eaa5.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 main-f0eaa5.o
  "std::__1::ios_base::init(void*)", referenced from:
      _main in main-f0eaa5.o
  "std::__1::ios_base::clear(unsigned int)", referenced from:
      _main in main-f0eaa5.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 main-f0eaa5.o
  "std::__1::basic_ios<char, std::__1::char_traits<char> >::~basic_ios()", referenced from:
      _main in main-f0eaa5.o
      std::__1::basic_ifstream<char, std::__1::char_traits<char> >::~basic_ifstream() in main-f0eaa5.o
  "std::bad_cast::bad_cast()", referenced from:
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::seekoff(long long, std::__1::ios_base::seekdir, unsigned int) in main-f0eaa5.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::sync() in main-f0eaa5.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::underflow() in main-f0eaa5.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::overflow(int) in main-f0eaa5.o
  "std::bad_cast::~bad_cast()", referenced from:
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::seekoff(long long, std::__1::ios_base::seekdir, unsigned int) in main-f0eaa5.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::sync() in main-f0eaa5.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::underflow() in main-f0eaa5.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::overflow(int) in main-f0eaa5.o
  "std::terminate()", referenced from:
      ___clang_call_terminate in main-f0eaa5.o
  "typeinfo for std::__1::basic_istream<char, std::__1::char_traits<char> >", referenced from:
      construction vtable for std::__1::basic_istream<char, std::__1::char_traits<char> >-in-std::__1::basic_ifstream<char, std::__1::char_traits<char> > in main-f0eaa5.o
      typeinfo for std::__1::basic_ifstream<char, std::__1::char_traits<char> > in main-f0eaa5.o
  "typeinfo for std::__1::basic_streambuf<char, std::__1::char_traits<char> >", referenced from:
      typeinfo for std::__1::basic_filebuf<char, std::__1::char_traits<char> > in main-f0eaa5.o
  "typeinfo for std::bad_cast", referenced from:
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::seekoff(long long, std::__1::ios_base::seekdir, unsigned int) in main-f0eaa5.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::sync() in main-f0eaa5.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::underflow() in main-f0eaa5.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::overflow(int) in main-f0eaa5.o
  "vtable for __cxxabiv1::__si_class_type_info", referenced from:
      typeinfo for std::__1::basic_ifstream<char, std::__1::char_traits<char> > in main-f0eaa5.o
      typeinfo for std::__1::basic_filebuf<char, std::__1::char_traits<char> > in main-f0eaa5.o
  NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
  "vtable for std::__1::ios_base", referenced from:
      _main in main-f0eaa5.o
  NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
  "vtable for std::__1::basic_ios<char, std::__1::char_traits<char> >", referenced from:
      _main in main-f0eaa5.o
  NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
  "non-virtual thunk to std::__1::basic_istream<char, std::__1::char_traits<char> >::~basic_istream()", referenced from:
      construction vtable for std::__1::basic_istream<char, std::__1::char_traits<char> >-in-std::__1::basic_ifstream<char, std::__1::char_traits<char> > in main-f0eaa5.o
  "non-virtual thunk to std::__1::basic_istream<char, std::__1::char_traits<char> >::~basic_istream()", referenced from:
      construction vtable for std::__1::basic_istream<char, std::__1::char_traits<char> >-in-std::__1::basic_ifstream<char, std::__1::char_traits<char> > in main-f0eaa5.o
  "operator delete[](void*)", referenced from:
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::~basic_filebuf() in main-f0eaa5.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::imbue(std::__1::locale const&) in main-f0eaa5.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::setbuf(char*, long) in main-f0eaa5.o
  "operator delete(void*)", referenced from:
      std::__1::basic_ifstream<char, std::__1::char_traits<char> >::~basic_ifstream() in main-f0eaa5.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::~basic_filebuf() in main-f0eaa5.o
  "operator new[](unsigned long)", referenced from:
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::imbue(std::__1::locale const&) in main-f0eaa5.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::setbuf(char*, long) in main-f0eaa5.o
  "___cxa_allocate_exception", referenced from:
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::seekoff(long long, std::__1::ios_base::seekdir, unsigned int) in main-f0eaa5.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::sync() in main-f0eaa5.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::underflow() in main-f0eaa5.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::overflow(int) in main-f0eaa5.o
  "___cxa_begin_catch", referenced from:
      ___clang_call_terminate in main-f0eaa5.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 main-f0eaa5.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::~basic_filebuf() in main-f0eaa5.o
  "___cxa_call_unexpected", referenced from:
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::close() in main-f0eaa5.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::basic_filebuf() in main-f0eaa5.o
  "___cxa_end_catch", 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 main-f0eaa5.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::~basic_filebuf() in main-f0eaa5.o
  "___cxa_throw", referenced from:
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::seekoff(long long, std::__1::ios_base::seekdir, unsigned int) in main-f0eaa5.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::sync() in main-f0eaa5.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::underflow() in main-f0eaa5.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::overflow(int) in main-f0eaa5.o
  "___gxx_personality_v0", referenced from:
      Partition_Info::getFileSystemType() in main-f0eaa5.o
      _main in main-f0eaa5.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 main-f0eaa5.o
      std::__1::basic_ifstream<char, std::__1::char_traits<char> >::~basic_ifstream() in main-f0eaa5.o
      std::__1::basic_filebuf<char, std::__1::char_traits<char> >::close() in main-f0eaa5.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 main-f0eaa5.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 main-f0eaa5.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++ gcc std


    【解决方案1】:

    gcc 是 C 代码编译器。
    g++ 是 C++ 代码编译器。

    【讨论】:

    • 或者,换句话说,要可靠地链接 C++ 代码,调用 g++ 而不是 gcc
    • g++ 工作了,谢谢,不过我已经使用 gcc 编译了我的程序的早期版本。有什么理由让它当时有效而不是现在?
    • @roukzz 最常见的原因是旧版本没有使用任何需要链接到 C++ 标准库的东西,这是使用 @987654324 编译/链接时发生的事情之一@
    猜你喜欢
    • 2015-09-14
    • 2016-03-25
    • 2018-08-20
    • 2013-02-07
    • 1970-01-01
    • 2017-12-03
    • 2013-06-10
    • 1970-01-01
    • 2016-06-20
    相关资源
    最近更新 更多