在看南大PA,配置环境时遇到了这个问题。
src/utils/disasm.cc:5:10: 致命错误:llvm/Support/TargetRegistry.h:没有那个文件
或目录
5 | #include "llvm/Support/TargetRegistry.h"
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
编译中断。
make: *** [/home/username/Desktop/Os/ics2021/nemu/scripts/build.mk:40:/home/use
rname/Desktop/Os/ics2021/nemu/build/obj-riscv32-nemu-interpreter/src/utils/disas
m.o] 错误 1
在 archlinux下找到什么工具可以查看缺少的文件被哪个包所包含。
https://unix.stackexchange.com/questions/14858/in-arch-linux-how-can-i-find-out-which-package-to-install-that-will-contain-file
在这里找到了答案,yay自身本来就有这个功能。
yay -F TargetRegistry.h
extra/llvm 16.0.6-1 [已安装]
usr/include/llvm/MC/TargetRegistry.h
extra/llvm14 14.0.6-3
usr/lib/llvm14/include/llvm/MC/TargetRegistry.h
extra/llvm15 15.0.7-1
usr/lib/llvm15/include/llvm/MC/TargetRegistry.h
extra/rocm-llvm 5.7.1-1
opt/rocm/llvm/include/llvm/MC/TargetRegistry.h
archlinuxcn/cling 0.9-3
opt/cling/include/llvm/Support/TargetRegistry.h
archlinuxcn/llvm-git 18.0.0_r475745.186a4b3b65787-1 (chaotic-mesa-git)
usr/include/llvm/MC/TargetRegistry.h
archlinuxcn/llvm-julia 15.0.7-11
usr/lib/llvm15/include/llvm/MC/TargetRegistry.h
archlinuxcn/rpcs3-git-debug 0.0.29.15724.ab8a12e211-1
usr/src/debug/rpcs3-git/rpcs3/3rdparty/llvm/llvm/llvm/include/llvm/MC/TargetRegistry.h
上面还说pkgfile 也有这个功能
用起来像这样:
pkgfile TargetRegistry.h
extra/llvm
extra/llvm14
extra/llvm15
extra/rocm-llvm
archlinuxcn/cling
archlinuxcn/llvm-git
archlinuxcn/llvm-julia
archlinuxcn/rpcs3-git-debug
相对来说比较简洁,但是少了一些信息,比如说我们现在想要的。
看yay -F 后我们可以知道在 0.9-3 之后的版本,TargetRegistery.h 存放在 Support下,之后根据版本的不同存放位置发生了相应的改变,看一下我们现在的版本:
llvm-config --version
16.0.6
找到了问题所在。接下来将disasm中的文件内容相应进行改动即可。