Mac Error: Undefined symbols for architecture x86_64
Mac Error: Undefined symbols for architecture x86_64
我正在尝试安装 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++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
我正在尝试安装 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++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