运行snakemake -jall触发build_veins规则报错,寻求技术帮助
问题:执行
snakemake -jall时build_veins规则编译失败 我正在使用serpentine场景并按对应教程操作,执行命令snakemake -jall时出现如下错误:
Building DAG of jobs... Using shell: /bin/bash Provided cores: 4 Rules claiming more threads will be scaled down. Job stats: job count --------------- ------- all 1 build 2 build_veins 2 build_veins_vlc 2 total 7 Select jobs to execute... [Mon Nov 20 11:16:38 2023] rule build_veins: input: lib/veins/src/Makefile output: lib/veins/src/libveins.so jobid: 9 reason: Missing output files: lib/veins/src/libveins.so wildcards: dbg= threads: 4 resources: tmpdir=/var/folders/qx/8mj8c3js6zdfblrg8s_5rqtr0000gn/T [Mon Nov 20 11:16:38 2023] Error in rule build_veins: jobid: 9 input: lib/veins/src/Makefile output: lib/veins/src/libveins.so shell: make -j4 -C lib/veins/src MODE=release (one of the commands exited with non-zero exit code; note that snakemake uses bash strict mode!) Shutting down, this might take some time. Exiting because a job execution failed. Look above for error message Complete log: .snakemake/log/2023-11-20T111637.880905.snakemake.log
我的环境版本:
- sumo Version 1.18.0
- OMNeT Version 6.0.2
- libprotoc 25.0
排查与解决方法
- 手动执行编译命令查看详细错误:在终端运行
make -j4 -C lib/veins/src MODE=release,snakemake仅提示命令失败,具体编译报错信息需要通过该命令获取,这是定位问题的关键。 - 检查OMNeT环境变量配置:确保OMNeT的
bin目录已加入系统PATH,OMNETPP_ROOT等核心环境变量设置无误,Veins编译依赖OMNeT++工具链,环境变量错误会直接导致编译失败。 - 验证版本兼容性:确认当前使用的Veins版本支持SUMO 1.18.0,不同Veins版本对SUMO的版本要求存在差异,版本不匹配可能引发编译接口错误。
- 核对protobuf版本适配:libprotoc 25.0版本可能过高,部分Veins版本依赖较低版本的protobuf(如3.x系列),可尝试降级到兼容版本后重试。
- 清理旧编译残留:进入
lib/veins/src目录,执行make clean,再重新运行snakemake -jall,避免旧编译文件干扰新构建流程。
内容的提问来源于stack exchange,提问作者Lorenzo Mancini
相关产品推荐
相关产品推荐

