我构建了一个自定义内核 3.2-41,需要 kernel-debuginfo-common 和 kernel-debuginfo 包。我在内核 2.6.32-358 的 CentOS 系统上安装了这些软件包。使用新内核可以正常启动系统。我运行 stap 来列出系统调用和内核函数,没有任何问题:
# stap -l 'syscall.*'
# stap -l 'kernel.function("*")'
但是,运行一个简单的 stap 脚本:
# stap -e 'probe "kernel.function("do_fork"){printf("fork is called\n")}'
返回错误:
make[1]: *** No rule to make target`/tmp/stap2QWXn/stap_12cd14bbeaab6bfcaac79c1830a62d98_710.src needed by /tmp/stap2QXn/stap_12cd14bbeaab6bfcaac79c1830a62d98_710.o
Stop.
make: *** [_module/stap2QWXn] Error 2
WARNING: kbuild exited with status: 2
pass 4: compilation failed. Try again with another '--vp 001' option.
我在 /usr/src/kernels/3.2-41 下解压 3.2-41 的源码。我没有安装 kernel-headers-3.2.41.x86_64.rpm 软件包,因为它试图覆盖 CentOS 2.6.32-258 内核使用的 /usr/include/ 目录。我需要在 /usr/include 中安装头文件吗?这会导致这个问题吗?