我是如何排查make的错误
Build C++项目代码时少不了使用make,在本地环境和推荐环境存在差异的情况下,难免会不碰到报错,这时常会让我感到沮丧。为了我身心健康,将一次排查的过程记录下。
Make的报错如下:
最下方有四个带***的行,这些行代表一次target: prerequisites的失败,方括号里的为失败的target。这些target分散在多个文件中,如何逐步找到具体的位置和出错的命令?
从当前目录的Makefile开始,make首先根据该文件构建check-lint,从Makefile中发现,check-lint的规则为:
单独去执行命令,得到报错:
可以看出报错语句少了一条,阅读CMakeFiles/Makefile2,发现构建check-lint的规则为:
这时候可以不用根据规则逐句执行命令,可以根据报错快速定位到出错的target,make[1]: *** [CMakeFiles/check-lint.dir/all] Error 2
,就是CMakeFiles/check-lint.dir/all,单独去执行构建它的命令,执行make -f CMakeFiles/check-lint.dir/build.make CMakeFiles/check-lint.dir/build
报错:
再去读CMakeFiles/check-lint.dir/build.make中CMakeFiles/check-lint.dir/build的构建过程,发现依赖check-lint,后者依赖CMakeFiles/check-lint,而构建CMakeFiles/check-lint的命令为
echo '/Users/hsy/dev/cmu15445-labs/src/buffer/buffer_pool_manager_instance.cpp /Users/hsy/dev/cmu15445-labs/src/buffer/clock_replacer.cpp /Users/hsy/dev/cmu15445-labs/src/buffer ...' | xargs -n12 -P8 /Users/hsy/dev/cmu15445-labs/build_support/cpplint.py ...
再去看这个python脚本,发现文件开头执行了命令/usr/bin/env python
,由于本机只有python3,因此把该句改为/usr/bin/env python3
即可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步