ElasticFusion 错误 Makefile:127: recipe for target 'all' failed

在尝试编译ElasticFusion时遇到错误,问题源于gcc和g++版本不一致。解决方案是将gcc/g++版本降级到4.9.x,对于Ubuntu 16.04和CUDA 8环境,具体步骤包括下载相应版本的gcc/g++,进行版本链接,并验证版本号。执行所有相关安装和构建步骤后,问题得以解决。
摘要由CSDN通过智能技术生成

运行官网https://github.com/mp3guy/ElasticFusion/blob/master/build.sh

直到下面部分:

#Actually build ElasticFusion
cd ../Core
mkdir build
cd build
cmake ../src
make -j8

 

make -j8 出错了,出错提示如下:

make[2]: *** [ElasticFusion] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/ElasticFusion.dir/all' failed
make[1]: *** [CMakeFiles/ElasticFusion.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2

 

解决办法: 我的是因为gcc和g++版本不统一,建议安装gcc/g++版本为4.9.x,我的ubuntu为16.04.cuda8

1. 下载gcc/g++ 4.9

sudo apt-get install -y gcc-4.9
sudo apt-get install -y g++-4.9

 2. 链接gcc/g++实现降

### 回答1: 这个错误信息表明在 Makefile 文件的 140 行,目标 "all" 的编译/链接过程失败了。可能是因为缺少依赖文件,或者编译/链接命令有误等原因导致。建议检查 Makefile 文件中相关的编译/链接规则和命令,以及确保所有依赖文件都存在并可用。 ### 回答2: Makefile 是一个常用的自动化编译工具,可以利用 Makefile 组织和管理大型项目代码的编译、链接和安装等操作,它是 Linux、Unix 工具链中不可或缺的一部分。Makefile 是通过默认或者用户指定的方式找到需要编译的文件和依赖,然后执行相应的编译工作,最终生成可执行文件或者库文件。 但是,在使用 Makefile 进行编译的过程中,有时会出现 makefile:140: recipe for target 'all' failed错误信息,这时就需要排查其原因以及解决方案了。 出现 makefile:140: recipe for target 'all' failed错误信息,一般是由于 Makefile 文件中的某个规则无法正常执行导致的。其中,makefile:140 表示 Makefile 中指定的第 140 行出现错误,recipe for target 'all' 表示出现错误的对象是 all,即 Makefile 中定义的默认目标,failed 表示执行失败。 造成此错误的原因可能有很多,其中包括: 1. 编译命令错误:例如,指定了错误的头文件、缺失了库文件或者语法错误等。 2. 编译依赖关系错误:例如,某个目标依赖于另外一个目标,但是没有正确地定义依赖关系。 3. 文件权限问题:例如,某个文件没有读写权限或者无法访问、执行。 针对不同的原因,解决方法也不同,可以参照以下几种方式: 1. 检查编译命令是否正确:Makefile 中的编译命令可能存在问题,例如,命令语法出错、文件不存在等,可以仔细核对代码并进行修正。 2. 检查依赖关系是否正确:Makefile 中的各个目标之间的依赖关系应该正确地定义,如果有错误的依赖关系,就需要修改 Makefile 中的依赖关系,使其正确地排列。 3. 检查文件权限问题:某个文件没有读写权限或者无法访问、执行,可以通过 chmod 命令更改文件权限,或者将文件移动到另一个目录中。 总结起来,对于 makefile:140: recipe for target 'all' failed 错误,需要先找出出现问题的对象,再仔细排查错误原因,最终进行相应的修正。 ### 回答3: “makefile:140: recipe for target 'all' failed”这个错误通常出现在使用Makefile编译代码时。这个错误提示表示,在执行Makefile中第140行所指定的目标“all”时出现了错误。这个目标可能是在Makefile中定义的一个需要编译的目标,或者是Makefile的默认目标。 出现这个错误的原因可能很多,以下是一些常见的原因: 1. 在代码中存在语法错误或逻辑问题。如果代码中存在错误,编译器将无法成功编译生成可执行文件,因此会导致该错误。 解决方法:检查代码并修复错误。 2. Makefile中的路径设置错误。如果Makefile中的路径设置不正确,编译器将无法找到所需的文件,从而导致该错误。 解决方法:检查Makefile中的路径设置是否正确,并进行必要的更改。 3. 编译器版本不兼容。如果在使用较老版本的编译器编译时,特别是在使用较新的代码时,编译器可能会因为版本不兼容而产生该错误。 解决方法:升级编译器版本或使用适当版本的编译器。 4. 代码中的库文件或头文件不匹配。如果使用的库文件或头文件版本与代码中使用的版本不同,编译器将无法正确编译代码并生成可执行文件,因此会导致该错误。 解决方法:检查代码中使用的库文件或头文件的版本,并与相应版本的库文件或头文件匹配。如果找不到相应版本的库文件或头文件,则需升级到适当版本。 总之,出现“makefile:140: recipe for target 'all' failed错误时,我们应该先检查代码本身是否存在问题,以及Makefile文件的路径设置是否正确。如果这些都没有问题,就需要进一步检查编译器版本和代码中使用的库文件或头文件是否匹配。通过仔细检查和逐步调试,我们可以找到并解决这个错误
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值