【问题标题】:Can't access the open /arch/x86/syscalls/syscall_32.tbl无法访问打开的 /arch/x86/syscalls/syscall_32.tbl
【发布时间】:2015-07-09 04:58:09
【问题描述】:

当我转移到内核后,我正在编写这个命令。当我编译它时,它没有显示任何列表。还有其他命令可以打开列表吗?

open /arch/x86/syscalls/syscall_32.tbl 

【问题讨论】:

  • 如果文件或目录不存在,如何安装或创建?
  • 在下面查看我的答案。

标签: linux-kernel system-calls


【解决方案1】:

错误

从文件路径中删除第一个 / 字符(因为它应该是 relative 路径)。

检查文件

现在,使用file 工具检查此文件是否存在:

$ file arch/x86/syscalls/syscall_32.tbl

打印文件

如果文件存在,您可以使用catless 命令打印它。例如:

$ less arch/x86/syscalls/syscall_32.tbl

您也可以在编辑器中打开此文件,例如使用vi 命令。

如果文件不存在

此文件附带 Linux 内核源代码。它是由this commit 在内核 3.3 中添加的。所以你应该使用3.3或以上的内核版本来拥有这个文件。

如何使用syscall_32.tbl文件下载内核

通过Gitkernel.org 下载香草主线内核源代码(使用来自here 的指令):

$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
$ cd linux/

现在您应该弄清楚要使用哪个版本。这取决于您的任务(您计划如何进一步使用此内核)。如果它打算在 PC Linux 发行版上使用,我会说选择最接近您的发行版内核的版本:

$ uname -a

您可以通过发出下一个 Git 命令查看所有可用版本:

$ git tag

现在您可以切换到您选择的版本(在上述命令的输出中)。例如。你可以像这样切换到v3.3

$ git checkout v3.3

切换到 3.3 或更高版本,您的内核源代码将有arch/x86/syscalls/syscall_32.tbl 文件:

$ less arch/x86/syscalls/syscall_32.tbl

【讨论】:

  • 我已经下载了 3.3 内核,但它仍然无法工作并显示任何系统调用列表
  • 我添加了关于如何获取包含syscall_32.tbl 文件的正确内核源代码的说明。 3.3 不可能没有syscall_32.tbl,一定是有什么错误。但我建议您使用最新版本,可能是LTS 一个。 v3.18 将是一个不错的选择。或者,如果您想要已具有 syscall_32.tbl 的最低 LTS 版本,请使用 v3.4
猜你喜欢
  • 2016-12-30
  • 2018-09-08
  • 1970-01-01
  • 2014-01-04
  • 1970-01-01
  • 2010-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多