Verilator调用g++时路径错误导致命令未找到问题求助
解决Verilator调用不存在的g++路径问题
问题场景
执行Verilator编译命令:
verilator --build -Wall --trace -cc alu.sv
触发如下错误:
/homes/tinebp/tools/gnu/bin/g++-10 -I. -MMD -I/home/verilator/include -I/home/verilator/include/vltstd -DVM_COVERAGE=0 -DVM_SC=0 -DVM_TRACE=1 -DVM_TRACE_FST=0 -DVM_TRACE_VCD=1 -faligned-new -fcf-protection=none -Wno-bool-operation -Wno-sign-compare -Wno-uninitialized -Wno-unused-but-set-variable -Wno-unused-parameter -Wno-unused-variable -Wno-shadow -std=gnu++14 -Os -c -o Valu__ALL.o Valu__ALL.cpp make: /homes/tinebp/tools/gnu/bin/g++-10: Command not found make: *** [Valu__ALL.o] Error 127
已确认/homes/tinebp/tools/gnu/bin/g++-10路径不存在,且本地环境变量已正确配置:
$ echo $CXX /package/gcc/11.2.0/bin/g++ $ which gcc /package/gcc/11.2.0/bin/gcc $ which g++ /package/gcc/11.2.0/bin/g++ $ echo $CC g++
原因分析与解决方法
1. Verilator安装时硬编码了编译器路径
Verilator在编译安装阶段会记录当时使用的编译器路径,后续运行时会优先调用该路径的编译器。如果你的Verilator是他人编译分发的,或是安装时依赖的g++-10已被移除,就会出现这个问题。
- 解决办法:
直接通过环境变量指定编译器后再运行Verilator:
或者在命令中通过CXX=/package/gcc/11.2.0/bin/g++ verilator --build -Wall --trace -cc alu.sv--ccflags参数传递编译器路径:verilator --build -Wall --trace -cc alu.sv --ccflags "-DCXX=/package/gcc/11.2.0/bin/g++"
2. Verilator生成的临时文件缓存了旧路径
--build参数会自动生成临时Makefile和编译缓存,可能残留了之前的编译器路径信息。
- 解决办法:
删除Verilator生成的临时目录(默认是obj_dir)后重新编译:rm -rf obj_dir verilator --build -Wall --trace -cc alu.sv
3. 存在残留的Verilator配置文件
检查是否存在VERILATOR_ROOT相关的配置文件,或是Verilator安装目录下的config.log等记录编译参数的文件,这些文件可能会覆盖环境变量的设置。
- 解决办法:
找到并删除/修改此类配置文件,确保编译器路径指向正确的/package/gcc/11.2.0/bin/g++。
内容的提问来源于stack exchange,提问作者Gagan G
相关产品推荐
相关产品推荐

