我正在使用 Ubuntu 12,内核版本是 3.8.0
我想添加个人系统调用,但无法找到上面提到的文件。
我正在尝试的路径是usr/src/linux-headers-3.8.0-19-generic/arch/x86/kernel
我也试过了usr/src/linux-headers-3.8.0-19-generic/arch/x86/syscalls
我也试过了usr/src/linux-headers-3.8.0-19/arch/x86/kernel
我在这个网站、stack exchange 和 google 上寻找解决方案但仍然无法解决 :(
请帮忙
答案1
要查找已安装的文件,您可以使用dpkg -S
$ dpkg -S syscall
gdb: /usr/share/gdb/syscalls
gdb: /usr/share/gdb/syscalls/sparc-linux.xml
manpages-dev: /usr/share/man/man2/_syscall.2.gz
gdb: /usr/share/gdb/syscalls/gdb-syscalls.dtd
gdb: /usr/share/gdb/syscalls/ppc64-linux.xml
gdb: /usr/share/gdb/syscalls/sparc64-linux.xml
gdb: /usr/share/gdb/syscalls/mips-n32-linux.xml
perl: /usr/lib/perl/5.14.2/bits/syscall.ph
manpages-dev: /usr/share/man/man2/syscalls.2.gz
gdb: /usr/share/gdb/syscalls/amd64-linux.xml
gdb: /usr/share/gdb/syscalls/i386-linux.xml
perl: /usr/lib/perl/5.14.2/syscall.ph
libc6-dev:i386: /usr/include/i386-linux-gnu/bits/syscall.h
perl: /usr/lib/perl/5.14.2/sys/syscall.ph
manpages-dev: /usr/share/man/man2/afs_syscall.2.gz
manpages-dev: /usr/share/man/man2/syscall.2.gz
gdb: /usr/share/gdb/syscalls/mips-o32-linux.xml
gdb: /usr/share/gdb/syscalls/ppc-linux.xml
libc6-dev:i386: /usr/include/syscall.h
gdb: /usr/share/gdb/syscalls/mips-n64-linux.xml
libc6-dev:i386: /usr/include/i386-linux-gnu/sys/syscall.h
linux-libc-dev:i386: /usr/include/i386-linux-gnu/asm/vsyscall.h
要找到已安装软件包未提供的文件,您可以尝试locate
(如果文件足够新:
$ locate syscall.h
/usr/include/syscall.h
/usr/include/i386-linux-gnu/asm/vsyscall.h
/usr/include/i386-linux-gnu/bits/syscall.h
/usr/include/i386-linux-gnu/sys/syscall.h
如果上述方法均未显示结果,您可以尝试在Ubuntu 软件包搜索:
http://packages.ubuntu.com/search?searchon=contents&keywords=文件名&模式=精确文件名&套件=raring&arch=any
如果你想要“当地的”解决方案用途apt-file
:
sudo apt-get -y 安装 apt-file sudo apt-file 更新 apt 文件搜索文件名
答案2
嘿,从终端尝试一下
find /usr/src/linux-headers-3.8.0-19-generic/ -type f -name "syscall_table_32.S"
如果出现权限错误,请尝试运行以下命令须藤
祝你好运!