c - 没有目录如/usr/src/linux-2.x/include/asm-i386/unistd.h

标签 c linux linux-kernel

我正在尝试按照本书 Operating System Concepts 中给出的项目部分构建一个内核作为一个业余项目。 Silberschatz、Galvin 和 Gagne 着。书中写道:

The system call numbers for recent versions of the Linux kernel are listed in /usr/src/linux-2.x/include/asm-i386/unistd.h.

但是我找不到这个目录。没有像linux-2.x这样的目录;所有的格式都是 linux-3.x

最佳答案

现在这些 header 是自动生成的,它们的表在例如:linux-4.4.5/arch/x86/entry/syscalls/ 中。根据发行版,您可能需要单独安装内核头文件,例如:使用 Ubuntu(数据包 linux-headers-$VERSION。版本必须适合内核版本!)。我发现它们安装在 /usr/src/linux-headers-3.13.0-37-generic/arch/x86/include/generated/asm/ (使用基于 Ubuntu 的 Linux Mint)。那里的 header 包含在 /usr/src/linux-headers-3.16.0-37/arch/x86/include 中的常规 unistd.h 中(同样适用于 x86)/asm/unistd.h。 (内核的实际版本可能有所不同)。

具有主要版本 2 的最后一个内核是 2.6.39.4从 2011 年 8 月开始。您可以尝试它,但它不会在比旧奔腾更现代的硬件上启动。如果你有一台这么旧的机器,或者有一台有足够马力运行虚拟奔腾机器的机器——那就去吧。但我会建议升级您的预订。

如果您想知道为什么您(和我)使用版本 3 而不是最新的 4.9:如果您的硬件与它一起运行,则它没有严重的安全相关错误,并且您不需要最新的内核,然后使用你的发行版给你的那个,他们知道他们在做什么(他大胆地说)。

关于c - 没有目录如/usr/src/linux-2.x/include/asm-i386/unistd.h,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41205406/

相关文章:

c - gdb/ddd 在调试 assert() 时找不到 raise.c,它在我的主目录中查找

c - 在客户端-服务器情况下将标准输出重定向到套接字

c++ - 无法正确安装 ZeroMQ/0mq/ØMQ

linux-kernel - 系统调用 Hook 问题

c - Linux 如何知道要调用哪个 ioctl 函数?

c - 在ARM中添加数组指针

c - 为什么我不能使用 fseek() 访问 EOF?

linux - 强制文件夹中的文件创建具有固定组 :user

linux - 从哪里获得 iostream.h

linux-kernel - linux在哪里调用摄像头驱动进行图片传输