【发布时间】:2023-11-09 06:32:01
【问题描述】:
我正在尝试编译一个用 C++ 编码的程序。它在 Mac OSX 上完美编译,但在 Linux 上失败。我一直在尝试运行在 Linux 上的两个独立集群,但都无法在两者上编译。
这是我得到的错误:
src/LCEcomposite.cc:513: error: no matching function for call to ‘find(__gnu_cxx::__normal_iterator >>, __gnu_cxx::__normal_iterator >>, unsigned int&)'
这是导致问题的代码行(LCEcomposite.cc 中的第 513 行)
if(find(_TraitIndices.begin(), _TraitIndices.end(), i) == _TraitIndices.end()) {
这是 Linux 上的make 版本
gcc version 4.4.7 20120313 (Red Hat 4.4.7-3) (GCC)
这是 Linux 上的 gcc 版本
GNU Make 3.81
This program built for x86_64-redhat-linux-gnu
这是uname -a的输出
Linux seawolf2 2.6.32-358.18.1.el6.x86_64 #1 SMP Wed Aug 28 17:19:38 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
【问题讨论】:
-
您是否在代码中明确包含
? -
这不是我的代码,这是一个大软件,几分钟前问过作者,但还没有得到答复。我在
LCEcomposite.cc中搜索了algorithm,但没有任何匹配项。它能回答你的问题吗? -
是的。它可能是在 MacOSX 上的工具(例如 XCode)下构建的。因此系统包含了该库,开发者没有注意到它的必要性。但是当手动编译时,这必须在代码上。或者 Apple 的编译器 (LLVM) 也会自动执行此操作。
-
@BasileStarynkevitch 为什么他需要更新版本的 GCC?
find在algorithm标头中,对于他正在使用的 GCC 版本,甚至更旧的版本,应该可以完美编译。
标签: c++ linux gcc compilation compiler-errors