南京大学ICS-PA0:环境配置相关错误解决

在Ubuntu22.04的VirtualBox环境中,遇到三个技术问题:1)安装libsdl2-dev时可能破坏依赖关系,解决方案是先执行`apt-getdist-upgrade`;2)缺少bison和flex导致编译错误,通过安装这两个工具解决;3)LLVM版本不匹配,需要安装llvm-11并处理TargetRegistry.h头文件问题,以及修正编译错误。
摘要由CSDN通过智能技术生成

所使用的虚拟机:

  • vritualbox
  • ubuntu22.04

问题一:无法安装libsdl2-dev,可能破坏依赖关系

执行sudo apt-get install libsdl2-dev时提示可能破坏已有依赖关系,参考本篇回答,在执行apt-get dist-upgrade之后,成功安装。

问题二:make[1]: bison: Command not found;make[1]: flex: Command not found

执行make menuconfig之后出现的。这两个都是同类的问题,是由于缺少bison和flex导致的,所以只要执行:

sudo apt-get install bison
sudo apt-get install flex

即可。

问题三:llvm/Support/TargetRegistry.h: No such file or directory

在nemu目录中执行make时出现这样的错误。

原因是22.04默认安装的llvm版本为14,可以执行llvm-config --version看一下,PA所需要的llvm版本是11,而14中是没有TargetRegistry.h的,所以可以通过首先安装llvm-11来获取该文件:

sudo apt-get install llvm-11

安装完以后就可以在/usr/lib/llvm-11/include/llvm/Support中找到这一头文件然后放进/usr/lib/llvm-14/include/llvm/Support中。

再次执行make后可能会出现error: enumeration value ‘GOFF’ not handled in switch [-Werror=switch]这样的错误,其实是因为switch分支结构缺少default,所以找到错误提示中的文件和switch分支,添加default:break;即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值