我正在尝试编译此处提供的代码,但是我在尝试运行命令 cmake 时遇到了困难。
运行此命令时很多东西输出到屏幕,其中有以下几行:
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
G2O_EXT_CSPARSE
并且
-- Configuring incomplete, errors occurred!
See also "/home/yalishanda/Downloads/lsd_slam_noros-master/build/CMakeFiles/CMakeOutput.log".
See also "/home/yalishanda/Downloads/lsd_slam_noros-master/build/CMakeFiles/CMakeError.log".
因此,当对 CMakeError.log 进行 cat 时,我可以看到以及许多其他事情 这:
/usr/bin/ld: cannot find -lpthreads
collect2: error: ld returned 1 exit status
CMakeFiles/cmTC_792f7.dir/build.make:97: recipe for target 'cmTC_792f7' failed
我已经使用以下命令安装了 pthreads:
sudo apt-get install libpthread-stubs0-dev
甚至返回:
Reading package lists... Done
Building dependency tree
Reading state information... Done
libpthread-stubs0-dev is already the newest version (0.3-4).
The following package was automatically installed and is no longer required:
snap-confine
Use 'sudo apt autoremove' to remove it.
0 upgraded, 0 newly installed, 0 to remove and 6 not upgraded.
所以我认为这不应该是问题,但错误输出文件却对此抱怨。
我也已经阅读了 SE 上与此类错误相关的另外 2 篇文章,但它们并未解决我的问题。
有人可以解释一下我做错了什么吗?
答案1
这似乎是 CMake 的一个长期错误。其他问题出现了,CMake 感到困惑,并报告了这个虚假问题而不是真正的错误。
在 CMakeLists.txt 文件中查找“thread”并暂时删除它。
答案2
此错误可能与库链接有关。我遇到了同样的问题,但安装build-essential
包解决了问题。尝试apt-get install build-essential
答案3
这是一个老问题,但当我在搜索引擎上搜索错误消息时,它是第一个出现的结果之一:
/usr/bin/ld: cannot find -lpthreads
这里的问题是拼写错误:-lpthreads
应为-lpthread
;没有尾随s
。
或者,至少在 的某些版本中ld
,您也可以使用-pthread
。