Makefile:140: recipe for target ‘all‘ failed make: *** [all] Error 2 Invoking “make -j8 -l8“ failed

编译C++工程问题出现最让痛苦的报错!!!

Makefile:140: recipe for target 'all' failed
make: *** [all] Error 2
Invoking "make -j8 -l8" failed

在这里插入图片描述向上翻找日志输出,发现是yaml文件的未定义错误:

对‘vtable for YAML::BadConversion’未定义的引用
对‘YAML::detail::node_data::empty_scalar[abi[  1%] Built target_robotis_controller_msgs_generate_messages_check_deps_StatusMsg:cxx11]()’未定义的引用
对‘YAML::BadConversion::~BadConversion()’未定义的引用
对‘YAML::detail::node_data::convert_to_map(std::shared_ptr<YAML::detail::memory_holder> const&)’未定义的引用
对‘YAML::BadConversion::~BadConversion()’未定义的引用
对‘typeinfo for YAML::BadConversion’未定义的引用
对‘typeinfo for YAML::BadConversion’未定义的引用

在这里插入图片描述

查找资料:vtable for YAML::BadConversion 的解决方法

发现是ubuntu版本和yaml版本不匹配的问题。本人是ubuntu18.04,然后安装上述所示参考资料,更换yaml0.5.0版本

cd yaml-cpp
mkdir build
cd build
cmake ..
make
make install

重新安装后yaml后,回到自己的工作空间,删除先前错误的build(否则会出现奇奇怪怪的错误),然后重新编译

rm -rf build/
catkin_make

编译成功!!!
在这里插入图片描述

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 调用 make -j4 -l4 失败了。 这个错误消息表明在运行 "make -j4 -l4" 命令时出现了问题。 -j 选项指定要使用的并发进程数, -l 选项指定要使用的最大并发进程数。 错误可能是由于缺少必要的库或依赖项导致的,也可能是由于配置错误导致的。 建议检查错误日志并确保系统上安装了所有必要的库和工具。 ### 回答2: invoking make -j4 -l4 failed一般是出现在使用make命令编译代码时,提示编译失败的错误信息。其中-j4表示并行编译的线程数,-l4则表示在编译失败时最多重试4次。 造成这个问题的原因可能有多种,下面列出几种可能的解决方案: 1. 确认环境是否正确配置 在编译代码之前,需要确认操作系统的依赖项和开发工具已正确安装。例如,在Ubuntu Linux中,可能需要安装包含了编译器、build-essential和make等必需工具的build-essential软件包。 2. 禁用并行编译 在某些情况下,并行编译可能会导致编译过程中出现问题。在这种情况下,可以尝试通过在make命令后添加-j1参数来禁用并行编译,使编译过程串行执行。 3. 修改makefile文件 makefile文件是为make命令提供编译过程信息的文件。可能需要在该文件中调整编译过程的一些设置以解决问题。例如,可以增加编译器的优化或修改链接文件路径。 4. 重新构建代码 在极少数情况下,可能需要重新构建代码,以便排除编译过程的中断和错误。 总的来说,invoking make -j4 -l4 failed错误提示可能出现在任何一种编译环境中,并不一定是固定的。不能将问题视为一成不变的,需要具体问题具体分析,从而采取对应解决方案。 ### 回答3: “invoking make -j4 -l4 failed” 的意思是在执行 “make -j4 -l4” 命令时出现了错误。这个命令通常用于并行编译,其中的参数 “-j4” 意味着并行编译使用 4 个线程,而 “-l4” 则指定了每个线程的最大负载。 出现这个错误通常有多种原因,以下是一些可能的原因和解决方案: 1. 硬件资源不足。当系统资源使用超出机器所能承受的范围时,会出现这个错误。可以尝试降低线程数或关闭其他占用资源的程序。 2. 编译器或库文件版本不匹配。在编译软件时,有时可能需要使用特定版本的编译器或库文件。如果使用了不兼容的版本,可能会导致编译失败。可以尝试更新或降级编译器和库文件版本。 3. 缺少依赖项。在编译软件时,可能需要依赖其他软件或库文件。如果缺少依赖项,则编译会失败。可以尝试安装缺少的依赖项。 4. 权限不足。如果没有足够的权限来执行 “make” 命令,则会出现这个错误。可以尝试使用管理员权限或者使用具有足够权限的用户账户来执行命令。 总的来说,这个错误可能有多种原因,并且需要具体情况具体分析。建议查看错误信息或者查阅相关文档来确定具体原因,并根据具体情况采取相应的解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值