Manjaro下Modelsim编译UVM工程报vsim-3828链接错误求助
报错根因
Modelsim内置的32位gcc 5.3.0版本在执行32位链接操作时,默认优先搜索系统64位库路径/lib下的crti.o文件,该文件为64位格式,无法适配32位链接要求,即使开启multilib也会因路径优先级问题触发该错误。
解决方案
- 方案一:临时指定32位库路径执行编译
执行make命令前先注入LIBRARY_PATH环境变量,优先指向32位系统库目录:
export LIBRARY_PATH=/usr/lib32:$LIBRARY_PATH make <你的编译目标名>
如果需要永久生效,可将上述export命令添加到你的shell配置文件(/.bashrc或/.zshrc)中,重启终端后即可全局生效。
- 方案二:修改Modelsim的gcc调用配置
进入Modelsim安装目录下的gcc二进制目录,将原有g++二进制文件重命名:
mv /opt/modeltech/gcc-5.3.0-linux/bin/g++ /opt/modeltech/gcc-5.3.0-linux/bin/g++_orig
新建同名g++ wrapper脚本,内容如下:
#!/bin/bash /opt/modeltech/gcc-5.3.0-linux/bin/g++_orig -L/usr/lib32 "$@"
给脚本添加可执行权限:
chmod +x /opt/modeltech/gcc-5.3.0-linux/bin/g++
该方案无需每次手动设置环境变量,Modelsim调用gcc时会自动添加32位库路径。
- 方案三:临时跳过DPI编译(验证用)
如果当前不需要用到DPI功能,可在vsim启动参数中添加-disabledpi,跳过DPI编译步骤,先验证其他仿真逻辑是否正常。
内容的提问来源于stack exchange,提问作者cyberbemon
相关产品推荐
相关产品推荐

