【问题标题】:Mac Error: Undefined symbols for architecture x86_64Mac 错误:架构 x86_64 的未定义符号
【发布时间】:2015-04-12 11:36:57
【问题描述】:

我正在尝试安装MIT Language Modeling Toolkit。我已经安装了依赖项,./autogen.sh 工作正常。但是,当我使用 make 编译时,我收到以下错误。我正在运行 OSX 10.10.3。

Undefined symbols for architecture x86_64:
  "std::__detail::_Prime_rehash_policy::_M_need_rehash(unsigned long, unsigned long, unsigned long) const", referenced from:
      std::_Hashtable<unsigned long, std::pair<unsigned long const, int>, std::allocator<std::pair<unsigned long const, int> >, std::__detail::_Select1st, std::equal_to<unsigned long>, std::hash<unsigned long>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_insert_unique_node(unsigned long, unsigned long, std::__detail::_Hash_node<std::pair<unsigned long const, int>, false>*) in evaluate-ngram.o
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status
make[1]: *** [evaluate-ngram] Error 1
make: *** [all-recursive] Error 1

【问题讨论】:

    标签: c++ macos gcc makefile g++


    【解决方案1】:

    库是否可能使用 C++11?

    您必须添加以下编译器标志:

    -std=c++11 -stdlib=libc++
    

    Mac OSX 带有两个版本的标准库,旧的libstdc++ 和新的libc++。只有后者支持 C++11。更多细节可以在这个answer找到。

    编辑:

    根据这个source,要让您的构建系统知道您对编译器标志的更改,请尝试以下操作:

    $ export CXXFLAGS="-std=c++11 -stdlib=libc++"
    $ export CC=`which clang` # optional step to make sure clang is being used
    $ export CXX=`which clang++` # optional step to make sure clang is being used
    $ ./autogen.sh
    $ make
    

    【讨论】:

    • 谢谢。那么我是否会将这些标志添加到make,即运行make -std=c++11 -stdlib=libc++
    • 不,它们应该在配置步骤之前添加。我会更新我的答案。
    • 感谢您的更新。既然我已经运行了./autogen.shmake,我应该在重新运行命令之前运行make clean 吗?
    • 我不确定是否必须这样做,但我建议您至少运行 make clean 甚至更好,删除所有与构建相关的文件。
    • 谢谢,但这现在会产生错误g++: error: unrecognized command line option '-stdlib=libc++'
    猜你喜欢
    • 2018-08-20
    • 2021-10-03
    • 1970-01-01
    • 2015-09-14
    • 2013-02-07
    • 1970-01-01
    • 2017-02-15
    • 1970-01-01
    • 2015-10-27
    相关资源
    最近更新 更多